我正在啓動一個具有多個應用程序的項目。這些應用程序在源文件方面共享一些通用功能。每個應用程序都應該有自己的make文件,但能夠從一個公共位置鏈接這些共享源文件。C項目:使用共享源代碼編譯多個應用程序
爲了說明這一點,這是我的目錄佈局:
project/
lib/
shared1/
shared1.c
shared1.h
shared2/
shared2.c
shared2.h
app1/
app1.c
app1.h
makefile
app2/
app2.c
app2.h
makefile
目前的makefile一個看起來有點像這樣:
CC=gcc
XXXCFLAGS=-Wall -Wextra -pedantic -I../../lib/shared1
CFLAGS=-I. $(XXXCFLAGS)
DEPS = app2.h ../../lib/shared1/shared1.h
OBJ = ${DEPS:.h=.o}
LIBS=-lpthread
%.o: %.c $(DEPS)
$(CC) -c -o [email protected] $< $(CFLAGS)
app2: $(OBJ)
$(CC) -o [email protected] $^ $(CFLAGS) $(LIBS)
這是大概去了解正確的方式管理共享源碼,還是有更好的方法。他們應該分別編譯庫嗎?如果是這樣,怎麼樣?
像這樣的相對路徑好嗎?
我應該使用autotools來做這樣的事嗎?查看示例後,我看不到如何鏈接共享代碼或庫。
任何指導最受讚賞。
除非你在編譯標誌或爲每個應用別的顯著的差異,我不知道你爲什麼會想每個應用有它自己的makefile。對我來說,你可以通過將它們全部放在一個makefile中來消除大量的重複位。 – twalberg