【发布时间】:2015-12-01 10:23:39
【问题描述】:
CMake 文档中提到了命令 file GLOB:
我们不建议使用 GLOB 从源代码树中收集源文件列表。如果在添加或删除源时没有 CMakeLists.txt 文件发生更改,则生成的构建系统无法知道何时要求 CMake 重新生成。
网络上的几个讨论线程秒,通配源文件是邪恶的。
但是,要让构建系统知道某个源已被添加或删除,只需说明一下
touch CMakeLists.txt
对吗?
这比编辑CMakeLists.txt 来插入或删除源文件名要省力。也不是更难记住。所以我看不出有什么好的理由反对file GLOB。
这个论点有什么问题?
【问题讨论】:
-
另见讨论here。正如我的回答中所述,我使用了一种混合方法:在
CMakeLists.txt文件中列出所有源文件(也因为有时我会为不同的构建配置手动挑选源文件)和头文件的通配符(出于方便使用它们在 VS 项目中)。我建议了一个解决方法,例如git与configure_file(${CMAKE_SOURCE_DIR}/.git/index ${PROJECT_BINARY_DIR}/git_index.tmp)类似。