2014-03-19 50 views
0

我想在可執行文件編譯過程中鏈接我生成的所有對象,但我似乎無法自動選擇生成目錄。鏈接生成文件中的子目錄中的對象

我曾嘗試:

test: $(OBJECTS) 
    $(CC) $(CFLAGS) $(INCDIR) $(LIBDIR) $(BUILDDIR)/$^ test.cpp -o test.exe 

的問題是,$(BUILDDIR)/$^僅在第一目標文件的前面插入$(BUILDDIR)

我應該怎麼做?

回答

1

如果你想添加$(BUILDDIR)直接在命令的所有先決條件,那麼你可以做:

test: $(OBJECTS) 
    $(CC) $(CFLAGS) $(INCDIR) $(LIBDIR) $(addprefix $(BUILDDIR)/,$^) test.cpp -o test.exe 

然而,建立制定規則,這樣就意味着你沒有正確地跟蹤依賴關係。我想你真正想要的是這樣的:

test: $(addprefix $(BUILDDIR)/,$(OBJECTS)) 
    $(CC) $(CFLAGS) $(INCDIR) $(LIBDIR) $^ test.cpp -o test.exe 
+0

太棒了。這就是它。儘管我認爲在這種情況下我只會定義'OBJECTS = $(addprefix $(BUILDDIR)/,$(SOURCES:.cpp = .o))'。任何理由不這樣做? – Wilsonator

+0

沒有理由不。我認爲把它放在這樣一個單獨的變量中甚至更加整潔。 – hetman

相關問題