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

Should I separate CMakeList.txt from source folder?

本文关键字:CMakeList txt 分离 文件夹 源文件 我应该      更新时间:2023-10-16

我是一个新的构建工具,当我遇到Autotool,我有一个选项,只写一个Makefile。我在顶部构建文件夹,并留下包含所有CPP文件干净的源文件夹。我可以使用VPATH来告诉automake在该文件夹中查找源代码,而不是写/src/每一个地方。(参考我以前的问题:自动生成变量来整理Makefile.am)

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

  • 在源文件夹
  • 中创建CMakeList.txt
  • 在顶部构建文件夹中创建CMakeList.txt,并单独留下源代码,我需要将"/src"扩展到每个源代码文件的成本。

哪一个更常用?我更喜欢第二种方法,因为它使我的源代码与任何与构建相关的源代码保持干净。在这种情况下,有没有办法摆脱"/src"?

在我们公司,我们使用第一种选择,在每个子目录中都有一个CMakeLists.txt,并通过使用add_subdirectory命令从根目录-CMakeLists.txt构建树。

这是一种模块化的方法,其中每个子组件(考虑项目有不同的部分,如boost被分成系统,线程,日期时间等)都有自己的构建文件。如果用户需要,他可以只构建子组件或构建整个项目。

我们还使用它作为在项目中包含可选子组件的简单方法。然后,用户可以设置一个Bool值,如BUILD_SUBFOO,如果该Bool值为TRUE,则add_subdirectory将被执行。

知名项目也在使用这种方法。下面是一个从KDevelop到根CMakeLists.txt的链接(查看第52-62行)。

我很确定你能做到:

FILE(GLOB Source_files src/*.cpp)