我有一個使用GNU Make的C++小型項目。我希望能夠把下面的源文件:使用GNU Make製作平面目標文件目錄結構輸出
src/
a.cpp
b/
b.cpp
c/
c.cpp
到下面的輸出結構(我在這一點不擔心重複):
build/
a.o
b.o
c.o
到目前爲止,我有下面,不幸的是放的.o和.D緊挨着的.cpp:
OBJS := $(foreach file,$(SRCS),$(file).o)
DEPS := $(patsubst %.o,%.d,$(OBJS))
sinclude $(DEPS)
$(OBJS) : %.o : %.cpp
@echo Compiling $<
$(CC) $(CC_FLAGS) $(INCS) -MMD -o [email protected] $<
我知道了$(notdir ...)的功能,但在這一點上我的努力,用它過濾對象失敗。任何人都可以對此有所瞭解嗎?這似乎是相當合理的事情。
好的,使用這種方法我可能需要一個額外的規則來創建輸出文件夾中的子文件夾? – Justicle 2009-09-02 01:29:14
我最終走下了這條路 - 因爲無論如何我需要製作特定於目標和配置的構建文件夾,所以很容易在「構建文件夾」步驟中添加另外幾個文件夾。謝謝! – Justicle 2009-09-02 05:28:43
生成文件夾的單獨規則應該可以正常工作。但是,我通常所做的只是在命令腳本中添加一個「@mkdir -p $(dir $ @)」行來創建輸出目錄(如果它尚不存在)作爲創建目標文件的一部分( S)。 – 2009-09-02 13:17:38