我们假设我有以下目录:
dir1
main.cpp
dir2
abc.cpp
dir3
def.cpp
dir4
ghi.cpp
jkl.cpp
让我们假设main.cpp包含dir2 / abc.cpp和dir3 / def.cpp,def.cpp包括dir4 / ghi.cpp和dir4 / jkl.cpp。
我的问题是,如何在dir1 /中有一个 Makefile / CMakeLists.txt,它递归地进入每个目录并编译* .cpp,然后“加入”它们?
对不起我的英文,希望我能很好地解释我的问题!
谢谢!
答案 0 :(得分:1)
对于makefile,dir1 / Makefile应该:
至于cmake,它会“自动”检测到这种依赖关系(二进制依赖于dir2 / abc.o和dir3 / def.o),所以你不需要关心它。
答案 1 :(得分:1)
一个CMakeLists.txt文件:
file(GLOB_RECURSE MAIN_SOURCES "dir1/*.cpp")
add_executable(MainExecutable ${MAIN_SOURCES})
# or
add_library(MyLibrary ${MAIN_SOURCES})
我不确定你“加入”消息来源是什么意思。我在这里假设你将它们组合成一个库或一个可执行文件。
答案 2 :(得分:0)
有一个开放的论点,递归制作是否是一件好事。请参阅this blog entry以获取有关相对最新的专业和会议论文的调查。