2017-01-30 23 views
0

我通過Visual Studio與CMake交叉編譯。交叉編譯器的平臺(在Visual Studio的平臺屬性頁中實現)要求將特定的屬性頁面添加到每個項目,否則將立即編譯失敗。在CMake的夜間分支中,有一個屬性VS_USER_PROPS_CXX,您可以使用它來添加此屬性表。這解決了我的項目文件和INSTALL項目文件。將屬性添加到CMake的ALL_BUILD和ZERO_CHECK目標

但是,此屬性不適用於ALL_BUILDZERO_CHECK目標。我可以設置CMAKE_SUPPRESS_REGENERATION,這將避免與ZERO_CHECK(禁用Visual Studio中的重新生成)的任何問題,但我似乎無法做任何有關ALL_BUILD。結果是,當我這樣做時:cmake --build <project dir>ALL_BUILD將失敗(即使我的項目成功)。

是否有任何方法可以禁用ALL_BUILD或爲其添加屬性?

回答

0

在檢查了CMake的源代碼之後,很明顯,無法爲ALL_BUILD(或ZERO_CHECK)添加附加屬性,至少不是開箱即用的。但是,源代碼可以被修改(er ... hacked),因此特定的屬性可以包含在實用程序目標中。

具體地,在用於在Visual Studio發生器,cmGlobalVisualStudio8Generator::AddCheckTarget添加ZERO_CHECK目標,和cmGlobalVisualStudioGenerator::AddExtraIDETargets添加ALL_BUILD目標。您可以修改這些代碼的源代碼,並在相應的位置調用cmTarget::SetProperty,並使用適當的值。

如果這是一個需求,不幸的是,你需要維護你自己的CMake版本。