VSCODE+cmake配置C++开发环境的实现步骤

 更新时间:2021年03月10日 11:43:14   作者:ha_____ha  
这篇文章主要介绍了VSCODE+cmake配置C++开发环境的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1.引言

在实习期间,感受到在vs code上编程的优势(实习期间主要写的lua脚本),因此想把C++和python的开发也迁移到vs code上。如果只运行一个简单的.cpp文件,那么使用万能的Code Runner插件就可以完成编译等任务。但是,一般的C++开发中,不可能只有一个.cpp文件,还会自定义头文件和相应的源文件,此时Code Runner就无法满足我们的要求。对于编译多个C++源文件,我网上查到的资料主要有两种方法:

(1)配置tasks.json文件

在tasks.json文件设置args参数,制定需要编译的多个文件

(2)cmake编译多个C++源文件

2.cmake配置过程

 2.1 预先安装

在windows环境下,首先预先完成如下安装

(1)安装vscode

(2)安装MinGW,并添加到环境变量

(3)安装cmake,并添加环境变量

(4)vscode C++和cmake相关插件安装,如图

2.2 vscode cmake配置

(参考:https://www.jb51.net/article/207289.htm

(1)选择vscode左上角,文件->首选项->设置->扩展中找到cmake tools configuration及Cmake: Preferred Generators,如图打开settings.json文件

并增加如下配置,因为我们使用的是MinGW,mingw对应首选生成器MinGW Makefiles

{
 "cmake.preferredGenerators": [
 "MinGW Makefiles"
 ]
}

 (2)同样是在扩展一项中,找到cmake configuration,并将Cmake Path设置为前面cmake的安装路径,如图

 在vscode终端中进行如下验证,看是否成功

(3) c_cpp_properties.json配置

(参考:https://www.jb51.net/article/171801.htm

按下ctrl+shift+p,搜索c++ config,打开c_cpp_properties.json文件

在该文件中主要有三个参数需要修改:

  • compilerPath,自己安装的MinGW编译器路径
  • intelliSenseMode,根据智能提示修改就行
  • configurationProvider

如图 

2.3 CMakeLists.txt文件编写

(参考:https://www.jb51.net/article/207291.htmhttps://www.jb51.net/article/207293.htm

CMakeLists.txt文件编写分为两种情况,一种是main.cpp和其他自定义的cpp文件在同一路径下,如图

main.cpp和mathfunc.cpp都在lib目录下,此时,CMakeLists.txt文件内容如下:

# cmake最低版本要求
cmake_minimum_required(VERSION 3.10)
# 项目名名称
project(testvscode)
# 头文件路径
include_directories(include)
# 枚举指定目录下的源文件,并添加到变量DIR_SRCS中
aux_source_directory(./lib DIR_SRCS)
# 生成可执行文件
add_executable(testvscode ${DIR_SRCS})

另一种情况下,main.cpp和自定义的cpp文件不在同一路径下,如图:

此时,lib文件夹内和外层目录(有cpp文件的地方就要有CMakeLists.txt)都要编写CMakeLists.txt。

其中,lib文件夹内CMakeLists.txt内容如下:

# 枚举指定目录下的源文件,并添加到变量DIR_LIB_SRCS中
aux_source_directory(. DIR_LIB_SRCS)
# 将源文件枚举变量添加到LIB_SRCS库文件中
add_library(LIB_SRCS ${DIR_LIB_SRCS})

而外层的CMakeLists.txt内容如下:

# cmake最低版本号要求
cmake_minimum_required(VERSION 3.10)
# 指定的项目名
project(testvscode)
# 添加头文件目录
include_directories(include)
# 添加lib子目录
add_subdirectory(lib)
#指定生成的可执行文件,第一个参数为文件名
add_executable(${PROJECT_NAME} main.cpp)
# 设置可执行文件的输出路径
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
#添加连接库
target_link_libraries(${PROJECT_NAME} LIB_SRCS)

 2.4cmake编译

最后附上几个C++头文件和源文件代码:

mathfunc.h

double scjfunc(double a, double b);

mathfunc.cpp

#include "mathfunc.h"
 
double scjfunc(double a,double b)
{
 return a*b*b;
}

main.cpp

#include<iostream>
#include"mathfunc.h"
 
using namespace std;
 
int main()
{
 double a,b;
 cout<<"enter a and b: "<<endl;
 cin>>a>>b;
 cout<<"a*b*b= "<<scjfunc(a,b)<<endl;
 
 system("pause");
 return 0;
}

3.总结

初次使用cmake,记录了一些使用心得,但不保证有些设置方法是最优的,有些理解是正确的,后面会不断学习不断改进,也希望大家多提提意见。 

注:如果cmake编译出现“cmake-file-api 的代码模型版本(2.1)不是预期版本。应为 (2.0)。IntelliSense 配置可能不正确”错误,参考(https://blog.csdn.net/nick_young_qu/article/details/107876532)解决。

到此这篇关于VSCODE+cmake配置C++开发环境的实现步骤的文章就介绍到这了,更多相关VSCODE+cmake配置C++环境内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Qt生成随机数的方法

    Qt生成随机数的方法

    本文主要介绍了Qt生成随机数,生成随机数主要用到了函数qsrand和qrand,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • C++ 中封装的含义和简单实现方式

    C++ 中封装的含义和简单实现方式

    这篇文章主要介绍了C++ 中封装的含义和简单实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • C语言中的sscanf()函数使用

    C语言中的sscanf()函数使用

    本文主要介绍了C语言中的sscanf()函数使用,sscanf通常被用来解析并转换字符串,可以实现很强大的字符串解析功能,下面就一起来了解一下
    2023-05-05
  • C++标准模板库vector的常用操作

    C++标准模板库vector的常用操作

    今天小编就为大家分享一篇关于C++标准模板库vector的常用操作,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • C++11 学习笔记之std::function和bind绑定器

    C++11 学习笔记之std::function和bind绑定器

    这篇文章主要介绍了C++11 学习笔记之std::function和bind绑定器,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-07-07
  • C++实现简单猜数字小游戏

    C++实现简单猜数字小游戏

    这篇文章主要为大家详细介绍了C++实现简单猜数字小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • 可读可执行的C语言简历源文件

    可读可执行的C语言简历源文件

    这篇文章主要为大家家详细介绍了可读可执行的C语言简历源文件,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • C语言结合ffmpeg打印音视频信息

    C语言结合ffmpeg打印音视频信息

    这篇文章主要介绍了如何通过C语言或者C++编程语言结合ffmpeg拿到一些音视频的关键信息,例如:帧率等。感兴趣的小伙伴可以跟随小编一起学习一下
    2021-12-12
  • C++实现冒泡排序(BubbleSort)

    C++实现冒泡排序(BubbleSort)

    这篇文章主要为大家详细介绍了C++实现冒泡排序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • 用位图排序无重复数据集实例代码(C++版)

    用位图排序无重复数据集实例代码(C++版)

    本文讲解如何用位图排序无重复的数据集,我们使用C++实现一下这个方法
    2013-11-11

最新评论