将Visual C ++ vcvars32.bat修改为目标XP平台

时间:2014-12-29 19:58:54

标签: visual-c++ boost

我在Stack Overflow用户Eoin上发现了一篇帖子,展示了他如何为VC ++ 2012修改vcvars32.bat(我使用2013):

:x86
if not exist "%~dp0bin\vcvars32.bat" goto missing
call "%~dp0bin\vcvars32.bat"
set INCLUDE=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Include;%INCLUDE%
set PATH=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Bin;%PATH%
set LIB=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Lib;%LIB%
set CL=/D_USING_V110_SDK71_;%CL%
goto :SetVisualStudioVersion

以下是修改前的部分:

:x86
if not exist "%~dp0bin\vcvars32.bat" goto missing
call "%~dp0bin\vcvars32.bat"
goto :SetVisualStudioVersion

在应用上述修改后,我使用CL (cl main.cpp)构建了一个“hello world”应用程序,但是可执行文件不能在Windows 2003上运行。如果使用IDE构建 如上所述,它运行得很好。

有人可以对发生的事情有所了解吗?

P.S。想要这样做的原因是我需要使用XP平台选项构建Boost库以允许我的应用程序在Windows 2003上运行。没有可用于构建Boost的解决方案或项目这是通过命令行使用他们的Bootstrap和Bjam例程完成的,该例程没有XP平台选项。

1 个答案:

答案 0 :(得分:2)

堆叠溢出Eoin建议的所有内容都是准确的,除了他的回答没有包含%LINK%的必要设置

这是我的工作:x86部分:

:x86
if not exist "%~dp0bin\vcvars32.bat" goto missing
call "%~dp0bin\vcvars32.bat"
set INCLUDE=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Include;%INCLUDE%
set PATH=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Bin;%PATH%
set LIB=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Lib;%LIB%
set CL=/D_USING_V110_SDK71_;%CL%
set LINK=/SUBSYSTEM:CONSOLE,5.01 %LINK%
goto :SetVisualStudioVersion

我希望创建需要XP和Windows 2003兼容性的解决方案的人发现这很有用。

完整详情:

http://blogs.msdn.com/b/vcblog/archive/2012/10/08/windows-xp-targeting-with-c-in-visual-studio-2012.aspx?PageIndex=2