使用VS Code 编译调试C++程序

软件及插件安装
1.先安装vs code;
2.安装必要的插件;在vs code扩展中直接搜索,点击安装即可。
除了汉化插件,其它几个是必须的。
3.安装C/C++编译工具与CMake工具,这两个工具需要去网上下载。国外的网站下载挺慢,这里分享一个百度网盘连接:链接:https://pan.baidu.com/s/1oiMxAp-6_dOGp3a0Q1tNzQ
提取码:gn17
  mingw是windows下的一个c/c++编译器,软件安装好之后,需要在电脑上添加环境变量:我的电脑右键->属性->高级系统设置->环境变量->系统环境变量->选择Path进行编辑->新建;输入软件安装的目录名(bin目录)
在这里插入图片描述
  CMake是一样的操作,添加环境变量之后需要重启电脑才会生效,至少我的电脑win10专业版是这样。重启之后可以在cmd中测试是否安装成功,输入gcc -v, make -v如能正常显示版本信息则安装成功。这里在输入make -v的时候可能会提示make不是内部或外部命令。原因在于mingw安装之后在其bin目录下的make程序名为
在这里插入图片描述
  你可以输入mingw32-make -v 或者为以后输入简单,将mingw32-make.exe复制改名为make.exe,然后使用make -v。

  只要安装好mingw,在vs code 终端里就可以对单个的 cpp文件进行编译了,
在这里插入图片描述  如果有程序有两个cpp需要编译,则可以g++ xx1.cpp xx2.cpp main.cpp -o main.exe;显然遇到大型工程时这样是不可取的。我们可以使用CMake来构建我们的工程。

vs code中配置CMake
  在vs code中使用cmake需要先配置其路径:文件->首选项->设置->CMake configuration,输入cmake的执行文件路径
在这里插入图片描述

  CMake是一种跨平台编译工具,比make更为高级,使用起来要方便得多。CMake主要是编写CMakeLists.txt文件,然后用cmake命令将CMakeLists.txt文件转化为make所需要的makefile文件,最后用make命令编译源码生成可执行程序或共享库(so(shared object))。因此CMake的编译基本就两个步骤:
1.cmake
2.make

CMake说明
  一般把CMakeLists.txt文件放在工程目录下,
在这里插入图片描述
  使用时,先创建一个叫build的文件夹(这个并非必须,因为cmake命令指向CMakeLists.txt所在的目录,例如cmake … 表示CMakeLists.txt在当前目录的上一级目录。cmake后会生成很多编译的中间文件以及makefile文件,所以一般建议新建一个新的目录,专门用来编译),然后执行下列操作:
cd build
cmake …
make
其中cmake … 在build里生成Makefile,make根据生成makefile文件,编译程序,make应当在有Makefile的目录下,根据Makefile生成可执行文件。

编写CMakeLists.txt

# 1. 声明要求的cmake最低版本
cmake_minimum_required( VERSION 2.8 )
​
# 2. 添加c++11标准支持
#set( CMAKE_CXX_FLAGS "-std=c++11" )
​
# 3. 声明一个cmake工程
PROJECT(rpt_main)MESSAGE(STATUS "Project: SERVER") #打印相关消息消息
  
# 4. 头文件
include_directories(
${PROJECT_SOURCE_DIR}/../include/mq 
${PROJECT_SOURCE_DIR}/../include/incl 
${PROJECT_SOURCE_DIR}/../include/rapidjson
)
​
# 5. 通过设定SRC变量,将源代码路径都给SRC,如果有多个,可以直接在后面继续添加
set(SRC 
${PROJECT_SOURCE_DIR}/../include/incl/tfc_base_config_file.cpp 
${PROJECT_SOURCE_DIR}/../include/mq/tfc_ipc_sv.cpp 
${PROJECT_SOURCE_DIR}/../include/mq/tfc_net_ipc_mq.cpp
${PROJECT_SOURCE_DIR}/../include/mq/tfc_net_open_mq.cpp 
${PROJECT_SOURCE_DIR}/local_util.cpp
${PROJECT_SOURCE_DIR}/AgentMemRpt.cpp 
${PROJECT_SOURCE_DIR}/AgentDiskRpt.cpp 
${PROJECT_SOURCE_DIR}/AgentLoadRpt.cpp 
${PROJECT_SOURCE_DIR}/AgentIoRpt.cpp
${PROJECT_SOURCE_DIR}/AgentNetRpt.cpp 
${PROJECT_SOURCE_DIR}/AgentCpuRpt.cpp 
${PROJECT_SOURCE_DIR}/AgentProcessRpt.cpp 
${PROJECT_SOURCE_DIR}/AgentParentRpt.cpp
${PROJECT_SOURCE_DIR}/AgentSysTop_5.cpp 
${PROJECT_SOURCE_DIR}/BaseFeatureRptMain.cpp 
)
​
# 6. 创建共享库/静态库
​
# 设置路径(下面生成共享库的路径)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib)
# 即生成的共享库在工程文件夹下的lib文件夹中
 
set(LIB_NAME rpt_main_lib)
# 创建共享库(把工程内的cpp文件都创建成共享库文件,方便通过头文件来调用)
# 这时候只需要cpp,不需要有主函数 
# ${PROJECT_NAME}是生成的库名 表示生成的共享库文件就叫做 lib工程名.so
# 也可以专门写cmakelists来编译一个没有主函数的程序来生成共享库,供其它程序使用
# SHARED为生成动态库,STATIC为生成静态库
add_library(${LIB_NAME} STATIC ${SRC})
 
# 7. 链接库文件
# 把刚刚生成的${LIB_NAME}库和所需的其它库链接起来
# 如果需要链接其他的动态库,-l后接去除lib前缀和.so后缀的名称,以链接
# libpthread.so 为例,-lpthread
target_link_libraries(${LIB_NAME} pthread dl)
   
# 8. 编译主函数,生成可执行文件
# 先设置路径
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin)
   
# 可执行文件生成
add_executable(${PROJECT_NAME} ${SRC})
   
# 这个可执行文件所需的库(一般就是刚刚生成的工程的库咯)
target_link_libraries(${PROJECT_NAME} pthread dl ${LIB_NAME})

一个简单的示例:
在这里插入图片描述
转化CMakeLists.txt
  在vs code终端内输入cmake,先要切换到build目录下,然后执行cmake …
这里需要特别注意,如果你的电脑安装了Microsoft Visual Studio,那么执行cmake … 会生成Visual Studio工程
在这里插入图片描述所以这里需要显示指定编译选项,cmake -G “MinGW Makefiles” …
在这里插入图片描述然后执行make就会生成main.exe; ./main.exe程序就执行了
在这里插入图片描述
vs code中调试C/C++
  vs code 菜单栏->运行->添加配置,选择gdb启动,这时会在工程目录下创建一个.vscode文件夹,文件夹下并生成了一个launch.json文件,对这个文件稍作修改,
在这里插入图片描述
在运行菜单下点击运行调试或者F5即可启动调试。
在这里插入图片描述小贴士:如果代码中有中文,vs code终端输出时可能会有乱码,可在终端中输入chcp查看cmd的编码,GBK2312的代码页编号是936,然后改成utf-8的编码即可,utf-8对应的代码页编号是65001,所以执行chcp 65001就可以把cmd的编码设置成uft-8了。
注意 需要在CMakeLists.txt 里加 set (CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -g”) 开启debug 不然断点调试是无效的 如需去除dubug 只要去掉此行了

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值