vscode cmake 编译32位程序

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

你可能感兴趣的:(vscode,cmake)