我有一個基本目錄src和兩個子目錄src/foo和src/tests。在src/tests中,我有一個生成src/tests/tests.cpp的Makefile。我想這取決於SRC /富/ * O,其中我與我如何構建Makefiles,使其中的目標取決於另一個目標?
%.o : %.cpp
${GCC} -c ${CXXFLAGS} $< -o [email protected]
在SRC /富/ Makefile文件
編譯。有沒有一種很好的方法來將我的Makefiles包含在另一個或其他東西中?
換句話說,SRC /富/ Makefile中的樣子:
OBJECT_FILES += bar.o baz.o ...
main: main.o ${OBJECT_FILES}
${GCC} ${CXXFLAGS} main.o ${OBJECT_FILES} -o main
%.o : %.cpp
${GCC} -c ${CXXFLAGS} $< -o [email protected]
,我想的src /測試/ Makefile中做這樣的事情:
# Obviously this is impossible right now since OBJECT_FILES is not defined in this Makefile.
tests: tests.o ${OBJECT_FILES}
${GCC} ${CXXFLAGS} tests.o ${OBJECT_FILES} -o tests
tests.o: tests.cpp
...
我會溝渠Makefiles並使用更好的構建系統。我個人更喜歡CMake,但也有其他人。 – Jens
是的,'make'不會執行本地遞歸或整個項目範圍目標依賴項。除了'cmake'之外,還要檢查'scons'或更老的'cons'。 scons是本地遞歸的:它將整個項目視爲一個整體,並允許從任何地方到任何地方都有依賴關係。儘管在大多數情況下,你甚至不需要像現在那樣指定依賴關係:它可以自己發現它們。 – Dummy00001