向CMake的ALL_BUILD和ZERO_CHECK目标添加属性

时间:2017-01-30 18:36:26

标签: visual-studio cmake cross-compiling

我通过Visual Studio与CMake交叉编译。交叉编译器的平台(在Visual Studio的平台属性页面中实现)要求将特定的属性页面添加到每个项目中,否则它将立即失败编译。在CMake的夜间分支中,有一个属性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或添加属性?

1 个答案:

答案 0 :(得分:0)

在检查CMake的源代码之后,显然无法向ALL_BUILD(或ZERO_CHECK)添加其他属性,至少不是开箱即用的。但是,可以修改源代码(er ... hacked),以便特定属性可以包含在实用程序目标中。

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

如果这是一项要求,遗憾的是,您需要维护自己的CMake版本。