使用 Visual Studio 2013 编译 Windows XP 的可执行程序
最近在开发一个小工具,需要支持 OS X 和 Windows 两个平台。于是乎使用了 CMake 和 CLion 来开发,其实也就是觉得好玩。
其中 Windows 的开发环境为 Windows 7 SP1 + Visual Studio 2013,编译出来的程序使用都很正常,然而同样的可执行文件放到 Windows XP 会提示无效的 Win32 应用程序。经过搜索发现,是因为 Windows XP 使用比较旧的 Windows 7.1 SDK,而 Vista 以后默认都不再支持。要支持的话,网上有几种方法,一个就是使用工程文件,指定 Toolchain 为 v120_xp
。这种方式网上广为流传,很可惜的是,我用的不是工程文件,而是 CMake 生成的 Makefile 文件,这种方式不适用。
后来仔细搜索了很多资料后发现,其实对于我的项目,只需要修改链接参数便可:
1 | if (MSVC) |
增加了上述设置到 CMake 后,编译出来的程序可以正常在 Windows XP 下运行。其中的 5.01
对应的应该是 Windows 2000 / XP 的 32 位系统。
部分参考文献:
- SUBSYSTEM 参数的参考:http://msdn.microsoft.com/en-us/library/fcc1zstk.aspx
- Microsoft 操作系统内部版本号参考:http://msdn.microsoft.com/en-us/library/windows/desktop/ms724832(v=vs.85).aspx
- CMake 的 Qt 参考:http://www.cmake.org/Wiki/CMake/Tutorials/Qt