我应该从源文件夹中分离CMakeList.txt吗?

时间:2011-07-07 17:55:48

标签: c++ build cmake

我是新手来构建工具,当我遇到Autotool时,我可以选择只在顶部构建文件夹中编写一个Makefile.am并保留包含所有cpp文件的源文件夹。我可以使用VPATH告诉automake在该文件夹中查找源代码而不是write / src / every where。 (请参阅我在这里的旧问题:Automake Variables to tidy up Makefile.am

然而在我看来,CMake没有VPATH可以设置,而且一些狐狸周围说这是不可能的。所以有两种选择:

  • 在源文件夹
  • 中创建CMakeList.txt
  • 在顶级构建文件夹中创建CMakeList.txt并保留源代码,我需要将“/ src”扩展到每个源代码文件。

哪一个更常用?我更喜欢第二种,因为它使我的源代码从任何构建相关源中保持干净。在那种情况下,无论如何都要摆脱“/ src”?

2 个答案:

答案 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)

这将完全符合您的要求。