关于在Ubuntu16.04系统下VsCode中配置cmake运行多文件C++的心得

关于在Ubuntu16.04系统下VsCode中配置cmake运行多文件C++的心得

在此之前

本人小白一个,为了配置好这个,向许多大大求教。

预先准备

一般使用 CMake 生成 Makefile 并编译的流程如下:

编写 CMake 配置文件 CMakeLists.txt

执行命令 cmake PATH

使用 make 命令进行编译

VsCode 基本准备

参考这篇博文,详细配置了ubuntu环境下的vscode

https://blog.csdn.net/zzz_xxj/article/details/86568353

应该注意的是,这里我采用cmake进行编译,因此其实无需配置launch.json和task.json,但后续为了可

以再vscode中进行调试,依旧需要编写launch.json,见后文。

Cmake准备

https://blog.csdn.net/daybreak222/article/details/81394363

一个C++工程文件夹的框架结构

众所周知,vscode是通过文件夹进行工程组织的。因此一个文件夹的工程结构最好可以明确下来,方便使用。

.
├── bin
├── build
├── CMakeLists.txt
├── include
│   └── a.h
└── src
    └── main.cpp

怎样搭建这样一个结构呢
1、

mkdir PROJECT

创建一个工程根目录,在vscode中打开这个文件夹。

mkdir bin
mkdir build
mkdir include
mkdir src
touch CMakeLists.txt
cd include
touch a.h
cd ..  //返回上一级目录,一个点是返回本级目录,两个点是上一级,注意cd和..之间有空格
cd src
touch main.cpp
cd ..
ls //查看一下此时所有目录是否已均建立完成

接下来按照cmake的执行顺序介绍这几个文件夹之间的关系。

include和src文件夹

include是存放.h文件的地方

src是存放.cpp文件的地方

CMakeLists

我自己的 CMakeLists.txt 内容如下:

cmake_minimum_required (VERSION 2.8)
project(PROJECT)   #根据自己的工程名修改
#下面的三个set()四选一,一般建议选Clang进行编译,clang --version命令可以查看版本号
set(CMAKE_CXX_COMPILER "clang++-3.8")
#set(CMAKE_CXX_COMPILER "g++")
#set (CMAKE_CXX_FLAGS  "${CMAKE_CXX_FLAGS} -g")
#set (CMAKE_CXX_FLAGS  "-g -fexec-charset=GBK")
# 开启调试信息
set(CMAKE_BUILD_TYPE "Debug")
set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb")
set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
# set(CMAKE_BUILD_TYPE "Release")
# set(CMAKE_CXX_FLAGS_DEBUG "-O0 -Wall -g -ggdb")
#头文件所在的路径包含进去
include_directories(${PROJECT_SOURCE_DIR}/include)  
#将src 文件夹下的全部源文件添加到SrcFiles这个集合中
aux_source_directory(./src SrcFiles)
#将可执行文件输出到文件夹bin中
set(EXECUTABLE_OUTPUT_PATH  ${PROJECT_SOURCE_DIR}/bin)
#将集合SrcFiles中的全部文件进行add
add_executable(PROJECT ${SrcFiles})

build文件夹

在build文件夹中,执行以下指令

cd build
cmake .. //通过build目录的上一级目录中的CMakeLists.txt 进行cmake
make

执行cmake …后

此时在build文件夹中,应有:

├── build
  	└── CMakeFiles文件夹
  			└── 一堆文件
  	└── CMakeCache.txt
  	└── cmake_install.cmake
  	└── Makefile

然后执行make

在bin文件夹中生成可执行文件PROJECT.o

cd bin
./PROJECT

即可运行。

VS Code断点调试CMake工程项目

初始状态

假设我们已经有一个CMake工程项目(比如从github上直接下载并做了一些修改),且我们可以保证能

够编译、运行(换言之,能保证无语法错误,但不能保证无逻辑错误)。

在完成执行

./PROJECT 

命令后

此时,我们的目标是,在VS Code中实现设置断点,并在运行时停在此处!

第一步: 修改CMakeLists.txt中相应语句为Debug模式。

这个在我前面给出的CMakeLists.txt 中已经设置完成,即“#开启调试信息”部分。

该步骤亦应通过在终端输入编译、运行指令,检验并确保无误。

第二步: 在VS Code中配置一个launch.json文件

在这里插入图片描述从图中可以看出,分成了三小步:

a. 配置lauch.json,依次点击黄色框中的“小虫子”和“齿轮”,将打开一个lauch.json的模板。而我们只需要修改其中的一行命令:

"program": "${workspaceFolder}/bin/PROJECT  // 是可执行文件所在的位置

lauch.json文件完整内容如下

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/bin/PROJECT",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

b. 点击如图位置的build,编译CMake工程项目。第一次可能要选择用哪个编译器,这个是在

CmakeLists.txt里配置的,如果不先点build旁边的cmake,需要选择编译器。用clang比较好。

注意每次改完源代码后都要重新进行build。

点build齿轮之后所有的编译后的东西自动被这个cmake插件放入了build文件夹中,这个文件夹也是

cmake插件自动生成的。用这个插件就无需自己创建build文件夹。

c. 打好断点,按F5运行即可。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值