Visual studio 2013 如何使用vs2013'在cmake中设置v120xp;s NMake

Visual studio 2013 如何使用vs2013'在cmake中设置v120xp;s NMake,visual-studio-2013,cmake,windows-xp,nmake,Visual Studio 2013,Cmake,Windows Xp,Nmake,我正在使用win7-32位的cmake来构建exe,我需要exe能够在WinXP上运行,我知道如何使用vs2013 IDE(将平台工具集设置为v120xp),但我没有使用IDE,我只是使用它的NMake。以下是生成项目文件和exe的方式: build> cmake -G "NMake Makefiles" .. build> nmake 问题1:在CMakeLists.txt中,如何使用v120xp进行设置 问题2:是否需要使用v120xp构建所有静态库?或者只是exe?尝试设置。

我正在使用win7-32位的cmake来构建exe,我需要exe能够在WinXP上运行,我知道如何使用vs2013 IDE(将平台工具集设置为v120xp),但我没有使用IDE,我只是使用它的NMake。以下是生成项目文件和exe的方式:

build> cmake -G "NMake Makefiles" ..
build> nmake
问题1:在CMakeLists.txt中,如何使用v120xp进行设置

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

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

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

cmake -G "NMake Makefiles" -DCMAKE_GENERATOR_TOOLSET=v120_xp ..
更新1:正如评论中指出的,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不支持工具集规范,但指定了工具集v120xp
。表示它仅适用于vs>=10。我搜索了这个选项,发现了一些其他选项,比如
set(CMAKE\u VS\u PLATFORM\u TOOLSET“v120xp”)
也不起作用。然后我找到了一些链接。简而言之,只需指定
SET(CMAKE\u EXE\u LINKER\u FLAGS“${CMAKE\u EXE\u LINKER\u FLAGS}/SUBSYSTEM:CONSOLE,5.01”)
SET(CMAKE\u EXE\u LINKER\u FLAGS“${CMAKE\u EXE\u LINKER\u FLAGS}/SUBSYSTEM:WINDOWS,5.01”)
正确的CMAKE选项应该是-DCMAKE\u GENERATOR\u TOOLSET=v120\u xp(在“xp”之前加下划线)