【问题标题】:CMake: rewrite project, only if modified?CMake:重写项目,仅在修改后?
【发布时间】:2017-04-01 07:27:32
【问题描述】:

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

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

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

【问题讨论】:

    标签: c++ visual-studio cmake


    【解决方案1】:

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

    如果我将其拆分为一个单独的脚本,该脚本仅包含在需要它的项目中,则不再重写这些项目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-18
      • 2018-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-09
      相关资源
      最近更新 更多