如何使用vs2013的NMake在cmake中设置v120xp

Posted

技术标签:

【中文标题】如何使用vs2013的NMake在cmake中设置v120xp【英文标题】:how to set v120xp in cmake with vs2013's NMake 【发布时间】:2014-09-09 08:40:42 【问题描述】:

我正在使用win7-32​​bit + cmake + vs2013的NMake.exe构建exe,我需要exe能够运行在 WinXP 上,我知道如何使用 vs2013 IDE(将 Platform-Toolset 设置为 v120xp)来做到这一点,但我没有使用 IDE,我只使用它的 NMake。这就是我生成项目文件和 exe 的方式:

build> cmake -G "NMake Makefiles" ..
build> nmake

问题1:在CMakeLists.txt中,如何设置使用v120xp?

问题 2:是否需要用 v120xp 构建所有静态库?还是只是exe?

【问题讨论】:

【参考方案1】:

尝试设置CMAKE_GENERATOR_TOOLSET。它允许为支持它的生成器选择工具集。支持工具集的生成器是 Visual Studio 和 XCode。

您对 CMake 的调用应如下所示:

cmake -G "NMake Makefiles" -DCMAKE_GENERATOR_TOOLSET=v120_xp ..

更新 1:正如 cmets 中指出的,NMake 不支持工具集

解决方案是指定

SET(CMAKE_EXE_LINKER_FLAGS "$CMAKE_EXE_LINKER_FLAGS /SUBSYSTEM:CONSOLE,5.01")

对于控制台应用程序,或

SET(CMAKE_EXE_LINKER_FLAGS "$CMAKE_EXE_LINKER_FLAGS /SUBSYSTEM:WINDOWS,5.01")

适用于 Windows 应用程序。

【讨论】:

谢谢,我试过了,但它抱怨:NMake Makefiles does not support toolset specification, but toolset v120xp was specified。 this thread 说它只适用于 vs >= 10。我搜索了这个选项,发现像 set(CMAKE_VS_PLATFORM_TOOLSET "v120xp") 这样的其他选项也不起作用。 并点击我找到的链接Targeting from the Command Line。简而言之,只需指定SET(CMAKE_EXE_LINKER_FLAGS "$CMAKE_EXE_LINKER_FLAGS /SUBSYSTEM:CONSOLE,5.01")SET(CMAKE_EXE_LINKER_FLAGS "$CMAKE_EXE_LINKER_FLAGS /SUBSYSTEM:WINDOWS,5.01") 正确的 cmake 选项应该是 -DCMAKE_GENERATOR_TOOLSET=v120_xp(“xp”前有下划线)

以上是关于如何使用vs2013的NMake在cmake中设置v120xp的主要内容,如果未能解决你的问题,请参考以下文章

如何在 NSIS 安装(CMake)中设置图标

VS2013中设置全局属性

如何使用 NMake 设置环境变量

如何通过 CMake/CPack 在 NSIS 中设置向导图像?

在现代 CMake 中设置全局选项?

在 cmake 中设置 PKG_CONFIG_PATH