vscode cmake 编译32位程序
为什么要用cmake
vscode中的C/C++插件直接支持的只是最简单的单文件编译、运行和调试,要管理大的项目,或者生成库,C/C++插件不能直接支持,需要开发者利用vscode的task功能,结合脚本/Makefile等工具实现,要支持多平台多配置比较麻烦,cmake则提供了这些便利,支持多平台、多配置、多目标。
系统需求
- C/C++ 开发工具,例如VC或gcc/g++
- cmake
- vscode + C/C++ extension pack (包含了C/C++插件和CMake Tools插件)
Windows + VC
64位window 10系统下,使用vscode配合cmake插件vc编译器编译可执行程序或库时,无需从“Developer Command Prompt for VS 2017”命令行启动vscode,在选择工具包时有四个选择,因为windows下即可以运行32位编译器,也可以运行64位编译器,而每个版本的编译器又都可以生成32位程序或64位程序。
kit | 编译器版本 | 生成的程序版本 |
---|
adm64 | 64位 | 64位 | adm64_x86 | 64位 | 32位 | x86 | 32位 | 32位 | x86_adm64 | 32位 | 64位 |
可以看出 adm64_x86 和 x86_adm64 是交叉编译,如果安装了更多的平台支持可能会有更多的选项。
当选择了不同的工具,使输出程序在不同的平台之间发生了切换,configure时会提示类似下面的错误,可以使用CMake: Delete Cache and Reconfigure 清除缓存,重新执行configure。
[cmake] CMake Error: Error: generator platform: win32
[cmake] Does not match the platform used previously: x64
[cmake] Either remove the CMakeCache.txt file and CMakeFiles directory or choose a different binary directory.
如果有类似下面的错误,可能是因为从“Developer Command Prompt for VS 2017”命令行启动的vscode,这限制了使用的编译器版本只能为64位(或32位),退出,直接从桌面或开始菜单启动vscode即可。
[cmake] CMake Error at CMakeLists.txt:67 (project):
[cmake] Generator
[cmake]
[cmake] Visual Studio 15 2017
[cmake]
[cmake] given toolset specification
[cmake]
[cmake] host=x86
[cmake]
[cmake] that contains invalid field 'host=x86'.
[cmake]
[cmake]
[cmake] Configuring incomplete, errors occurred!
Linux + gcc/g++
现在大多数桌面Linux版本都是64位系统,要在这样的系统上编译32位程序首先要安装编译器的32位支持,对于ubuntu系统来说,这个包是gcc-multilib/g++-multilib
sudo apt install g++-multilib
要编译32位程序则要依赖cmake在编译命令中添加32编译选项-m32 ,具体方法参考 https://blog.csdn.net/FlushHip/article/details/114677775
|