问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

开发环境搭建:VS Code + Clang + Cmake编译C++

创作时间:
作者:
@小白创作中心

开发环境搭建:VS Code + Clang + Cmake编译C++

引用
CSDN
1.
https://blog.csdn.net/chy107/article/details/145082266

本文将详细介绍如何使用VS Code、Clang和Cmake搭建C++开发环境。对于熟悉Visual Studio或Qt Creator的开发者来说,这是一个很好的机会来尝试更轻量级的开发环境。

作为一名C++开发者,之前一直在使用visual studio(VS2010/VS2017/VS2019/VS2022都用过,目前主要在VS2019)和Qt Creator(主要以Qt项目为主)作为IED来完成C++项目开发。不得不说,这两款IDE都非常出色,开箱即用,功能齐全,对于各种规模的项目都能应付自如。对于初学者,特别是对于学习C++而言特别适合,其开箱即用的特点不用为构建、编译器这些概念和各种配置劝退,可以只关注于学习语言本身。
最近有项目刚好要用Clang编译器,用Cmake来构建。利用这次项目的机会,也本着学习的机会,干脆抛弃IED,而直接使用最近大火的VS Code来作为代码开发环境。通过各种百度、博客终于搭建了VSCode + Clang + Cmake开发C++的环境。下面,将从基本概念一步步实现。

VS Code:代码编辑器,用来编辑代码。
Clang:编译器,用来编译代码。更广泛的叫法是LLVM/Clang。Clang是前端(负责词法和语法分析,将源代码转化为抽象语法树),LLVM是后端(将已经优化的中间代码转化为针对各自平台的机器代码)。
Cmake:构建工具,用来统一不同的构建文件,通过一套统一的规范,生产不同平台的构建文件,如Linux中的makefile,Windows下Visual studio的.sln或.vcxproj等。
对于编译器,LLVM/Clang,Cmake,以及GCC等网上有海量的资料查找到。

配置过程

软件安装

VS Code的安装

VS Code 下载地址:Download Visual Studio Code - Mac, Linux, Windows,官网下载合适自己电脑系统的版本即可(windows7目前最高支持的版本是vs code 1.70~1.72)。

对于C++的话,这几个插件是最基础的可以安装:chinese这个是为了汉化,想提高英语水平的可以忽略(但还是强烈建议)

安装完成后基本窗口如下,需要的插件自行安装即可。但对于简单C++编译来说,上述三个已经满足基本使用。

LLVM/Clang

clang作为LLVM的前端,下载LLVM自动包含了clang。
各个版本官方下载地址:
Download LLVM releaseshttps://releases.llvm.org/
https://releases.llvm.org/

选择版本,然后进入相应页面下载自己的合适的版本。比如我是win11,所以选择如下下载:

安装过程很简单,只是记得将在安装过程中勾选“将环境变量到系统环境变量PATH”,否则后续还要手动添加。

此时安装完成了clang编译器。但是还有一点要注意,clang安装过程并没有安装标准库。如果这时直接用clang编译器编译代码,会提示像找不到iostream头文件等错误。

我因为安装了vs 2022,执行clang++ -v,可以看到如下信息:Target: x86_64-pc-windows-msvc

在Windows中默认target了MSVC的标准库。如果没有安装vs,则需要安装一个MinGM(GCC)或者lib++等,确保在本地有一个标准库,然后手动garget到这个标准库就行了。关于garget标准库的方法,可以自行搜索clang -targer相关信息,很容易能解决。

还有个问题,我最开始安装了clang 16.0.6和vs 2022,但是编译依旧报错#include这一行,最后发现是clang 16太老了,不支持vs 2022自带的MSVC编译中的标准库某些宏定义。将clang升级到17.0或者后续版本就可以了。

其实,到了这一步,已经有了编译器了,可以直接编译代码了。如在vs code中写个简单的hello word程序,如下:

test.cpp:

#include<iostream>
using namespace std;
int main()
{
    std::cout<<"hello clang"<<std::endl;
    return 0;
}  

然后配置vs code的编译器路径。选择1设置按钮,然后点击clang++.exe,就会在test.cpp文件所在文件下自动生成.json格式的配置文件,自动的将clang编译器作为编译器。执行vs code的运行功能,此时应该会生成正确的编译结果。

或者,不配置vs code的编译器,直接在终端(也可以是vs code继承的终端)中执行clang 的命令行编译命令:clang test.cpp -o test.exe也可生成可执行文件test.exe。前提是将clang加入了系统环境变量,否则会提示clang不是命令等提示。

Cmake


Cmake的相关概念可以查看我的CMake专栏的相关文章。其中介绍CMake概念的一篇是:
CMake基础知识-概念篇-CSDN博客
https://blog.csdn.net/chy107/article/details/145245443?spm=1001.2014.3001.5501---------------------------------------

对于安装Cmake,如果是windows系统,且在安装vs 2022时选择了cmake(全局搜索看有没有cmake.exe可知有没有安装过),则只需要把cmake.exe所在目录添加到系统环境变量中即可。如果时其他系统,如Linux,或者windows中没有安装cmake,则在cmake官网下载安装即可。windows会有一个cmake-gui,这个主要是编译开源库时会用到,有兴趣可以搜索下windows下cmake编译opencv即可知道流程和作用。

在这里,只要确保安装了cmake.exe并添加到了系统环境变量即可。

至此,可以用cmake编译上述文件了:

在.cpp所在文件夹下新建CMakeLists.txt文件,输入如下:

# Set the minimum version of CMake that can be used
# To find the cmake version run
# $ cmake --version
cmake_minimum_required(VERSION 3.1)
# cmake .. -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ && make -j24 VERBOSE=1
set(CMAKE_C_COMPILER "clang")
set(CMAKE_CXX_COMPILER "clang++")
# Set the project name
project (cmake_project)
 
# Add an executable
add_executable(test_cmake test.cpp)  

此时,在源文件所在文件夹路劲执行cmake命令,即可生成类似linux下makefile文件,或者vs中.sln和.vcxproj文件。

在Linux中继续执行make命令,即可编译成功。

在windows系统中执行cmake --build .命令,"."表示当前路径。这时,在文件夹内自动新建Debug文件夹,生成test_cmake.exe文件。

关于cmake、make、cmake --build以及CMakeLists.txt文件语法以及命令行操作不赘述。

另:为了避免cmake命令生成大量中间文件在.cpp文件所在文件夹中,可以建一个build文件夹,然后,通过命令行切换到build文件夹中执行cmake .. 命令,此处“..”表示build的上层路径,也即实际源代码所在路径。这是所有临时文件都在build文件夹了,源代码的目录中干净了许多。

具体可以查看命令行各种命令的作用(可以搜索Linux下命令行基本操作等),可以自行尝试。效果如下:

总结

至此,VS Code + Clang + Cmake编译C++的环境搭建成功。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号