2010-09-01 45 views
1

如果我在make文件這樣的規則:的Makefile與一代的.o不同的規則

CC = g++ 
CFLAGS = -Wall 
COMPILE = $(CC) $(CFLAGS) -c 

src = A.cpp \ 
     main.cpp 

test_src = Test.cpp 
test = testAll 

OBJFILES := $(patsubst %.cpp,%.o,$(src)) 
TEST_OBJS := $(patsubst %.cpp,%.o,$(test_src)) 

%.o: %.cpp 
    $(COMPILE) -I UnitTest++/src -LUnitTest++/ -l UnitTest++ -o [email protected] $< 

我結束了,包括和連接單元測試++非測試文件,如主A.cpp 如何我可以只讓測試類與測試庫鏈接嗎?

+0

愚蠢的問題時:如果您要創建目標文件,並在編譯器實際上調用鏈接(因此使用庫)?如果你正在處理程序,也許。 – 2010-09-01 01:53:15

回答

3

指定哪些文件你的規則適用於:

$(TEST_OBJS): %.o: %.cpp 
    $(COMPILE) -I UnitTest++/src -LUnitTest++/ -l UnitTest++ -o [email protected] $< 
+0

gmake具體? – dmckee 2010-09-01 01:09:07

+0

@dmckee我只是用gnu make來運行它。作品。所以不是gmake特定的。 – anio 2010-09-01 01:14:14

+1

@anio:gmake表示GNU版本。這個名字通常用於在系統已經存在的情況下安裝GNU make(毫無疑問,這些日子並不常見)。我剛剛檢查了GNU make的文檔,並瞭解到其他人支持基於%的模式規則,所以我仍然不會。 – dmckee 2010-09-01 01:20:09