【问题标题】:Adding properties to CMake's ALL_BUILD and ZERO_CHECK targets向 CMake 的 ALL_BUILD 和 ZERO_CHECK 目标添加属性
【发布时间】:2017-01-30 18:36:25
【问题描述】:

我正在通过 Visual Studio 与 CMake 进行交叉编译。交叉编译器的平台(在 Visual Studio 的平台属性页中实现)要求将特定的属性页添加到每个项目,否则将立即编译失败。在 CMake 的 nightly 分支中,有一个属性VS_USER_PROPS_CXX,您可以使用它来添加此属性表。这修复了我的项目文件和 INSTALL 项目文件。

但是,此属性不适用于ALL_BUILDZERO_CHECK 目标。我可以设置CMAKE_SUPPRESS_REGENERATION,这将避免ZERO_CHECK 出现任何问题(同时在Visual Studio 中禁用重新生成),但我似乎对ALL_BUILD 无能为力。结果是当我这样做时:cmake --build <project dir>ALL_BUILD 将失败(即使我的项目成功了)。

有什么方法可以禁用ALL_BUILD 或为其添加属性?

【问题讨论】:

    标签: visual-studio cmake cross-compiling


    【解决方案1】:

    在检查了 CMake 的源代码之后,很明显没有办法向ALL_BUILD(或ZERO_CHECK)添加额外的属性,至少不能开箱即用。但是,可以修改源代码(呃...黑客),以便可以将特定属性包含在实用程序目标中。

    具体来说,在 Visual Studio 生成器中,cmGlobalVisualStudio8Generator::AddCheckTarget 添加了 ZERO_CHECK 目标,cmGlobalVisualStudioGenerator::AddExtraIDETargets 添加了 ALL_BUILD 目标。您可以修改它们的源代码,并在适当的位置调用cmTarget::SetProperty,并使用适当的值。

    如果这是一个要求,不幸的是,这意味着您需要维护自己的 CMake 版本。

    【讨论】:

      猜你喜欢
      • 2015-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-21
      • 1970-01-01
      • 1970-01-01
      • 2013-11-07
      • 2015-12-12
      相关资源
      最近更新 更多