vscode cmake-tools 的作用,以及和cmake的联系
vscode cmake-tools 的作用,以及和cmake的联系
camke tools
是 vscode
中的一个插件,顾明思意,它和cmake
有关,他是vscode中编译工程
的工具。
linux中使用cmake编译工程的一般过程
在Linux中,一般的构建工程是直接使用cmake
,通过cmake
调用cmakelist.txt
文件,生成makefile
文件(Generator),然后通过make
命令调用makefile
(generator
)进行build
,生成库文件、可执行文件,如果需要将库文件和头文件安装到特定目录(需要在cmakelist.txt中配置目标以及安装路径)可以执行install
命令。
vscode and cmake
在vscode
中没有直接使用cmake
,而是在cmake
之上再构建了一个工具,也就是cmake tools
,再使用cmake tools
之前需要在vscode
中指定一个kits
(套件), kit 代表toolchain
: A set of compilers
, linkers
, or other tools
that will be used to build a project.
首先kit
(kit 有配置文件)确定了toolchain
,并且kit
会生成一个工具链文件,这个工具链文件指导cmake tools
(应该是cmake tools
读取工具链文件)调用cmake
,选择合适generator
(在Ubuntu中一般是makefile
),进行configuration
即根据cmakelist.txt
生成makefile
。最后build
即根据makefile
生成库文件、可执行文件的过程。
vscode
vscode 的cmake tools
总是configure
第一个目录,就是:在工作空间中,包含多个projects
,cmake tools
总是对第一个project
进行configure
,而不是对正在编的那个project
进行configure
。解决办法是将需要configure
的project
拖拽到第一个。
makefile xcode Ninja .sln & g++ Visual C++ MSBuildvscode
可以在Windows Linux中运行,因此在configure project
的时候,vscode
会考虑MSBuild
即使用visual c++ compiler
进行编
译,因此在cmake tools
会主动检测系统的编译器,如果采用visual c++ compiler
则会采用.sln generator
(vs 中的解决方案文件),
如果当前系统是在macos
,那么generator
就是xcode
,在linux/unix平台,generator
就是makefile
.Ninja
也是一个generator
.
因此cmake
可以跨平台的原因就在这里。g++ Visual-C++
是两个编译器,一个是开源的,一个是微软的。
图例
注:做个笔记,个人愚见,高手绕行