我通过Visual Studio与CMake交叉编译。交叉编译器的平台(在Visual Studio的平台属性页面中实现)要求将特定的属性页面添加到每个项目中,否则它将立即失败编译。在CMake的夜间分支中,有一个属性VS_USER_PROPS_CXX
,您可以使用它来添加此属性表。这会修复我的项目文件和INSTALL
项目文件。
但是,此属性不适用于ALL_BUILD
或ZERO_CHECK
目标。我可以设置CMAKE_SUPPRESS_REGENERATION
,这将避免ZERO_CHECK
的任何问题(同时在Visual Studio中禁用重新生成),但我似乎无法对ALL_BUILD
做任何事情。结果是,当我执行:cmake --build <project dir>
时,ALL_BUILD
将失败(即使我的项目成功)。
有没有办法禁用ALL_BUILD
或添加属性?
答案 0 :(得分:0)
在检查CMake的源代码之后,显然无法向ALL_BUILD
(或ZERO_CHECK
)添加其他属性,至少不是开箱即用的。但是,可以修改源代码(er ... hacked),以便特定属性可以包含在实用程序目标中。
具体来说,对于Visual Studio生成器,cmGlobalVisualStudio8Generator::AddCheckTarget
添加ZERO_CHECK
目标,cmGlobalVisualStudioGenerator::AddExtraIDETargets
添加ALL_BUILD
目标。您可以修改这些源代码,并使用适当的值在适当的位置调用cmTarget::SetProperty
。
如果这是一项要求,遗憾的是,您需要维护自己的CMake版本。