CMake:重写项目,只有在修改后?

时间:2016-11-17 16:34:02

标签: c++ visual-studio cmake

我有一个CMake项目,可以在一个解决方案中生成多个Visual Studio项目。如果我对CMake脚本进行更改(仅影响单个项目(例如,add_target_definitions)并调用CMake重新生成项目,则所有项目文件(* .vcxproj)都将重写为磁盘。这会触发所有目标的重建,即使可能只有一个项目文件实际上与它不同。这大大增加了我所拥有的不同配置的构建时间。

我想仅使用这些不同的目标定义重建几个项目(例如,在命令行上提供),而不是重新编译未受影响的库。我还需要一个在编译ALL_BUILD目标时有效的解决方案,并且不会将项目拆分为多个项目(解决方案)。

是否有CMake选项或其他一些技巧来避免这种行为?

1 个答案:

答案 0 :(得分:0)

事实证明,我使用add_target_definitions的CMake脚本包含在顶层的CMakeLists.txt中,因此,它下面的目录中的所有CMakeLists.txt都是它的依赖项。我通过检查其中一个项目的generated.stamp.depend找到了这个。

如果我将其拆分为仅由需要它的项目包含的单独脚本,则不再重写项目。