[英]Have CMake select MSVC platform toolset explicitly
嗨,我有一個問題,我有一個C ++項目,該項目使用select C ++ 11/14功能,這些功能最多只能在CTP_Nov2013編譯器工具集中提供,而對於MSVC編譯器而言。 我知道有一個非常類似的話題在這里 ,和最相關的答復是,該工具包不能從腳本修修補補,為最終用戶會想用它修補。
我找到了一種方法來實現我想要的命令
set(CMAKE_GENERATOR_TOOLSET "CTP_Nov2013" CACHE STRING "Platform Toolset" FORCE)
set(CMAKE_VS_PLATFORM_TOOLSET "CTP_Nov2013" CACHE STRING "Platform Toolset" FORCE)
但是,這樣做的問題是腳本需要運行兩次才能生效。 由於cmake命令行是使用以下命令調用的
cmake -G"Visual Studio 12 2013 Win64"
已經選擇了一個工具集,但是我立即希望覆蓋合並到所選生成器的x64配置中的工具集。 最終,用戶可以像通常一樣使用生成器規范從命令行中選擇32/64位版本,但是如果他/她安裝了CTP,我希望對“最終用戶”隱藏MSVC編譯器的功能。
我如何編寫腳本並從命令行調用它,使其對Visual Studio和NMake Makefiles生成器以及CMake的首次調用均起作用?
使用@Tanuki和set_target_properties的回復,您可以在目標中強制使用平台工具集
if (CMAKE_VS_PLATFORM_TOOLSET MATCHES "CTP_Nov2013")
set_target_properties(${your_target}
PROPERTIES
PLATFORM_TOOLSET "${CMAKE_VS_PLATFORM_TOOLSET}")
endif()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.