linux下使用vscode和cmake高效管理c++项目简明教程

  安装vscode及c++环境配置可以参见:https://blog.csdn.net/fangshuo_light/article/details/123635576
  首先,创建工程目录,并在vscode中打开该文件夹,在里面创建如下文件夹:

  • include:用于存放.h文件
  • src:用于存放.cpp文件
  • build:cmake生成文件的存放路径
  • CMakeLists.txt:cmake配置文件

  创建完成目录如下图所示:
在这里插入图片描述

  然后,我们创建一个名为comp的文件,里面声明并定义了一个计算输入数据x的平方的函数compute;然后我们在main里面调用这个方法。那么,实现这个功能的目录结构以及各个文件的内容如下:

  • 目录结构:
    在这里插入图片描述
  • CMakeLists.txt内容:
cmake_minimum_required(VERSION 3.16)                # 说明要求的最低cmake版本,可不需要这行,但是每次cmake后会有warning,所以还是加上
project(MOTION_AVERAGING)                           # 指定工程名,可以自己随便取,不重要
set(SRC_LIST src/main.cpp src/comp.cpp)             # 设置变量SRC_LIST。内容为src/main.cpp src/comp.cpp,用于后面添加src文件
set(CMAKE_BUILD_TYPE Debug)                         # 设置编译类型,可以是Debug,也可以是Relase
include_directories(${CMAKE_SOURCE_DIR}/include)    # 添加头文件搜索路径,${CMAKE_SOURCE_DIR}指代当前cmake文件的路径,这样写后在include自己编写的头文件时就不用再加前缀include了
add_executable(ma ${SRC_LIST})                      # 指定生成的可执行文件名,以及需要编译的所有cpp文件,也就是上面定义的SRC_LIST变量内容,如果添加新的文件,则修改上面变量指代的内容即可
  • comp.h内容:
int compute(int x);
  • comp.cpp内容:
# include <iostream>
# include "comp.h"
using namespace std;

int compute(int x){
    
    
    return x*x;
}
  • main.cpp内容:
# include <iostream>
# include "comp.h"
using namespace std;

int main (int argc, char **argv){
    
    
    int x=2;
    int x2 = compute(x);
    cout << "The square of " << x << " is " << x2 << endl;
    return 0;
}

  一开始build目录下是没有东西的,然后我们cd到build目录下,在终端执行编译命令:

$ cmake ..
-- The C compiler identification is GNU 9.3.0
-- The CXX compiler identification is GNU 9.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/xxx/motionaveraging/build

$ make
-- Configuring done
-- Generating done
-- Build files have been written to: /home/xxx/motionaveraging/build
Scanning dependencies of target ma
[ 33%] Building CXX object CMakeFiles/ma.dir/src/main.cpp.o
[ 66%] Building CXX object CMakeFiles/ma.dir/src/comp.cpp.o
[100%] Linking CXX executable ma
[100%] Built target ma

  执行完上述两个命令后,我们就可以在build目录下看到生成了如下内容:
在这里插入图片描述
  其中的ma也就是我们指定的生成可执行文件名,其他的文件不需要管。然后,要获得输出结果,只需要在终端执行该可执行文件即可:

$ ./ma
The square of 2 is 4

  看到该输出内容,则表明我们的工程成功搭建,一切执行正常。

  在这样的管理下,我们逐步扩大和搭建工程,就会变得很有条理。比如要创建新的.h和.cpp文件readfile,专门用于读取文件数据,则要将其添加到工程中,只需将CMakeLists.txt修改为:

cmake_minimum_required(VERSION 3.16)               
project(MOTION_AVERAGING)                        
set(SRC_LIST src/main.cpp src/comp.cpp src/readfile.cpp)            
set(CMAKE_BUILD_TYPE Debug)                                        
include_directories(${CMAKE_SOURCE_DIR}/include)               
add_executable(ma ${SRC_LIST})

  其实只是将readfile.cpp添加到SRC_LIST变量里就行了,然后再cmake和make即可。但是这样的话,每次修改完代码还需要自己手动cmake一下,很麻烦。不过我们可以通过在vscode里设置task.json文件,来实现自动化的cmake,可以参考:
linux下使用vscode进行c++项目开发,CMakeLists.txt、launch.json、tasks.json联合配置需要注意的地方
ubuntu下使用vscode对c++程序进行自动化调试(设置task.json)
ubuntu下使用vscode对c++程序进行调试的详细图文教程(设置launch.json)

猜你喜欢

转载自blog.csdn.net/weixin_44120025/article/details/129228287