我是新手来构建工具,当我遇到Autotool时,我可以选择只在顶部构建文件夹中编写一个Makefile.am并保留包含所有cpp文件的源文件夹。我可以使用VPATH告诉automake在该文件夹中查找源代码而不是write / src / every where。 (请参阅我在这里的旧问题:Automake Variables to tidy up Makefile.am)
然而在我看来,CMake没有VPATH可以设置,而且一些狐狸周围说这是不可能的。所以有两种选择:
哪一个更常用?我更喜欢第二种,因为它使我的源代码从任何构建相关源中保持干净。在那种情况下,无论如何都要摆脱“/ src”?
答案 0 :(得分:5)
在我们公司,我们使用第一个选项,在每个子目录中都有一个CMakeLists.txt,并使用add_subdirectory
命令从root-CMakeLists.txt构建树。
这是一种模块化方法,其中每个子组件(考虑项目有不同的部分,如boost分为系统,线程,date_time等)都有自己的构建文件。如果用户希望他能够构建子组件或构建整个项目。
我们还使用它作为向项目中包含可选子组件的简单方法。然后,如果此Bool为BUILD_SUBFOO
,则用户可以设置类似add_subdirectory
的Bool值,并且只会执行TRUE
。
众所周知的项目也在使用这种方法。以下是来自KDevelop的根CMakeLists.txt的链接(请参阅第52-62行)。
答案 1 :(得分:0)
我很确定你能做到:
FILE(GLOB Source_files src/*.cpp)
这将完全符合您的要求。