我有一个CMake项目,可以在一个解决方案中生成多个Visual Studio项目。如果我对CMake脚本进行更改(仅影响单个项目(例如,add_target_definitions
)并调用CMake重新生成项目,则所有项目文件(* .vcxproj)都将重写为磁盘。这会触发所有目标的重建,即使可能只有一个项目文件实际上与它不同。这大大增加了我所拥有的不同配置的构建时间。
我想仅使用这些不同的目标定义重建几个项目(例如,在命令行上提供),而不是重新编译未受影响的库。我还需要一个在编译ALL_BUILD
目标时有效的解决方案,并且不会将项目拆分为多个项目(解决方案)。
是否有CMake选项或其他一些技巧来避免这种行为?
答案 0 :(得分:0)
事实证明,我使用add_target_definitions
的CMake脚本包含在顶层的CMakeLists.txt中,因此,它下面的目录中的所有CMakeLists.txt都是它的依赖项。我通过检查其中一个项目的generated.stamp.depend
找到了这个。
如果我将其拆分为仅由需要它的项目包含的单独脚本,则不再重写项目。