CMake快速使用+VSCode开发(调试)

这篇具有很好参考价值的文章主要介绍了CMake快速使用+VSCode开发(调试)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

CMake学习使用

1、cmake安装和入门使用

1.1 安装
sudo apt install cmake	# 即可安装

cmake -version  # 查看安装的cmake版本

cmake vscode,vscode,c++,linux,ide,vim

1.2 简单程序使用cmake

在指定的目录中作为项目目录,里面只有一个Apply.cpp文件。此外为了使用cmake,需要有一个CMakeLists.txt文件。内容如下:

cmake vscode,vscode,c++,linux,ide,vim

在项目目录中创建一个build文件夹,然后进入该目录进行命令的操作。如下:

cmake vscode,vscode,c++,linux,ide,vim

此时,有了Makefile文件,然后可以使用make命令来生成可执行程序app,如下:

cmake vscode,vscode,c++,linux,ide,vim

最后可以使用app来执行程序。如果需要删除app可执行文件,可以使用make clean然后app就会被清理掉,再使用make又可以重新生成。

1.3 总结三个cmake命令
# 1、设置对cmake的最小版本,这里设置了要求的最低版本是3.0
cmake_minimum_required(VERSION 3.0)

# 2、设置工程名为apply,此外还可以设置工程的版本,以及对工程的描述。
project(apply VERSION 1.0 DESCRIPTION "这是一个简单的工程")

# 3、生成可执行文件
add_executable(app Apply.cpp)
# add_executable(exename source1 source2 ... sourceN)
# 第一个参数为可执行程序名,后面的是n多个cpp文件

2、项目级的组织结构

2.1 项目结构安排

cmake vscode,vscode,c++,linux,ide,vim

4.0.1目录是项目目录,其中include是项目的头文件,所有头文件都放在这里面;src是cpp源文件的目录;build是cmake命令生成的相关的文件的目录(Makefile);bin目录是make命令之后生成的目标对象的存放目录(可执行文件、静态库、动态库)。CMakeLists.txt文件内容如下:

# cmake配置

# 1、设置对cmake的最小版本
cmake_minimum_required(VERSION 3.0)

# 2、设置工程名
project(apply VERSION 12.0 DESCRIPTION "这是一个项目级别的工程")

# 3、指定需要的头文件目录
include_directories(include) # 相对于CMakeLists.txt所在的目录

# 4、获取指定目录下的所有cpp文件,用SRC_LIST变量代替
# 如果src目录下的cpp文件很多,在生成可执行文件时一个个写出来十分不便,所以可以使用这个命令方便使用
# aux_source_directory(src SRC_LIST)

# 4.1
# aux_source_directory虽然能够很方便的获取所有cpp,但是某些情况下有部分cpp不需要,此时可以使用set命令解决
set(
    SRC_LIST 
    ./src/Computer.cpp
    ./src/Log.cpp
    ./src/main.cpp
)

# 5、生成可执行文件,这里的所有cpp文件用变量替代
add_executable(app ${SRC_LIST})

# 6、设置目标对象(可执行文件)的输出目录。即app可执行文件就会输出到bin目录中
# EXECUTABLE_OUTPUT_PATH是cmake中已定义的变量,表示目标二进制可执行文件的存放位置
# PROJECT_SOURCE_DIR 是工程根目录的变量
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

2.2 命令总结
# 1、设置变量set(varname value1 value2 ...)
# 设置cpp文件集合的变量,即通过SRC_LIST替代所有cpp文件
set(SRC_LIST main.cpp foo.cpp bar.cpp)
# 增加编译选项,CMAKE_CXX_FLAGS是cmake系统的变量
set(CMAKE_CXX_FLAGS "-O2 -Wall")

# 2、向工程添加多个特定的头文件搜索路径 --->相当于指定g++编译器的-I参数
# 语法: include_directories(dir1 dir2 ...)
include_directories(include1 include2 ...)

# 3、aux_source_directory获取指定目录下的所有cpp资源文件
aux_source_directory(src SRC_LIST)   # 获取src目录下的cpp资源文件,将其用变量SRC_LIST替代

# 4、添加编译选项,相当于-std=c++11 -g -Wall等
add_compile_options(-Wall -g -std=c++11)

3、静态库和动态库的生成

3.1 项目结构

cmake vscode,vscode,c++,linux,ide,vim

# cmake配置

# 1、设置对cmake的最小版本
cmake_minimum_required(VERSION 3.0)

# 2、设置工程名
project(apply VERSION 12.0 DESCRIPTION "这是一个关于库的工程")

# 3、指定需要的头文件目录
include_directories(include)

# 4、获取指定目录下的所有cpp文件,用SRC_LIST变量代替
aux_source_directory(src SRC_LIST)

# 5、生成静态库文件和动态库文件,这里的所有cpp文件用变量替代
add_library(kiki_so SHARED ${SRC_LIST})
add_library(kiki_a STATIC ${SRC_LIST})

# 设置输出对象的名称
set_target_properties (kiki_so PROPERTIES OUTPUT_NAME "kiki")
set_target_properties (kiki_a PROPERTIES OUTPUT_NAME "kiki")

# 6、设置库的输出目录
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

输出结果如下:

cmake vscode,vscode,c++,linux,ide,vim

3.2 总结命令
# 1、生成库文件(包括动态库和静态库)
add_library(libname [SHARED|STATIC] source1 source2 ... sourceN) 

# 2、设置库的输出目录
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
# EXECUTABLE_OUTPUT_PATH 变量是可执行文件的输出目录变量
# LIBRARY_OUTPUT_PATH 变量是动态库静态库的输出目录变量

# 3、用于设置一个目标的属性。这个命令通常用于设置生成的可执行文件、静态库或动态库的一些属性。
set_target_properties(
    <target> 
    PROPERTIES 
    <prop1> <value1> 
    <prop2> <value2>
    ...
) 
# 所以,第一个target通常是add_libary和add_executable所生成的对象。OUTPUT_NAME属性表示输出的文件名
# 这个命令通常设置的属性有:
* OUTPUT_NAME:指定生成的目标的名称。默认情况下,生成的目标的名称与目标的名称相同,但是可以通过 OUTPUT_NAME 属性来自定义名称。
* LIBRARY_OUTPUT_DIRECTORY:指定生成的动态库的输出目录。默认情况下,生成的动态库将被放置在构建目录下,但是可以通过 LIBRARY_OUTPUT_DIRECTORY 属性来自定义输出目录。
设置这个属性类似于set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)的效果,但是这个会将所有目标都输出到指定的目录中;如果通过这个属性设置,可以设置指定的目标到指定的目录中。如上面的两个库,可以将其中一个动态库对象输出到其他目录中。不可以输出改变静态库的输出目录。
* ARCHIVE_OUTPUT_DIRECTORY:指定生成的静态库的输出目录。同LIBRARY_OUTPUT_DIRECTORY属性的功能。
* RUNTIME_OUTPUT_DIRECTORY:指定生成的可执行文件的输出目录。set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)功能类似。

4、使用静态库和动态库

4.1 项目结构

cmake vscode,vscode,c++,linux,ide,vim

# 使用动态库静态库

# 设置项目对cmake的最低要求
cmake_minimum_required(VERSION 3.25)

# 设置工程名以及版本
project(AppSO VERSION 2.1)

# 设置头文件变量,其包含所有需要的头文件。
# 第一个目录是本项目的,第二个是动态库的头文件目录,第三个是静态库头文件目录
set(headers include ../3.29.3/include ../3.29.5/include)

# 设置头文件变量到项目中
include_directories(${headers})

# 设置编译选项
add_compile_options(-Wall -std=c++11 -g)

# 设置资源变量
set(cpps src/program.cpp src/main.cpp)

# 生成指定的可执行程序
add_executable(apply ${cpps})

# 情况一:libtps.so放在/usr/lib目录中
# 找到动态库,这里是已经把libtps.so放到了默认索的路径中
# find_library(TPS_LIB_VAR tps) 
# 添加动态库连接相当于g++ -l
# target_link_libraries(app ${TPS_LIB_VAR})

# 情况二:是不将动态libtps.so放到指定默认的搜索目录中
# add_library命令创建一个名为tps的目标,表示一个动态库。IMPORTED选项告诉CMake这个目标不是通过源代码编译出来的,而是外部已经编译好的目标。
# 然后使用set_target_properties命令设置tps目标的属性,其中IMPORTED_LOCATION属性指定了动态库文件的路径。
# 最后,target_link_libraries命令将动态库链接到app可执行文件中。命令如下:
# add_library(tps_obj SHARED IMPORTED)
# set_target_properties(tps_obj PROPERTIES IMPORTED_LOCATION /home/yoyo/workspaces/cmakes/3.29.3/build/libtps.so)
# target_link_libraries(app tps_obj)

# 情况三:与情况二相同,只是操作方式不同
find_library(TPS_LIB_VAR_ tps HINTS /home/yoyo/workspaces/cmakes/3.29.3/build/)
# 第二个目录是静态库文件(静态库比较简单,直接写就行)
set(libs ${TPS_LIB_VAR_} /home/yoyo/workspaces/cmakes/3.29.5/build/libstps.a)

# 连接所有的库
target_link_libraries(apply ${libs})

# 设置可执行程序的输出目录
set_target_properties(apply PROPERTIES
    RUNTIME_OUTPUT_DIRECTORY "../bin"
)
4.2 总结命令
# 1、find_library: 在指定目录下查找指定库,并把库的绝对路径存放到变量里,其第一个参数是变量名称,第二个参数是库名称,第三个参数是HINTS,第4个参数是路径。表示在指定的目录下找对应库名称的库,用第一个参数变量名称保存。如果不写第三个和第四个参数就默认在系统默认的目录中搜索库。

# 2、target_link_libraries:链接库,第一个参数是可执行程序目标对象,第二个参数是库。

VSCode调试运行

VSCode调试配置

cmake vscode,vscode,c++,linux,ide,vim

#### launch.json文件配置
{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++ - 生成和调试活动文件",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/bin/apply",  ### 配置可执行文件
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "/usr/bin/gdb",
            "preLaunchTask": "Build",       ### 还需要配置任务json文件,配置这个可以避免修改源码之后需要手动make重新生成。这个Build是task.json文件中一个label
        }
    ]
}
#### tasks.json文件配置
{
    "version": "2.0.0",
    "options": {
        "cwd": "${workspaceFolder}/build"
    },
    "tasks": [
        {
            "type": "shell",
            "label": "cmake",
            "command": "cmake",
            "args": [
                ".."
            ]
        },
        {
            "label": "make",
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "command": "make",
            "args": []
        },
        {
            "label": "Build",   ### launch.json中选择了这个
            "dependsOrder": "sequence",
            "dependsOn": [
                "cmake",
                "make"
            ]
        }
    ]
}

cmake vscode,vscode,c++,linux,ide,vim
cmake vscode,vscode,c++,linux,ide,vim文章来源地址https://www.toymoban.com/news/detail-779660.html

到了这里,关于CMake快速使用+VSCode开发(调试)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Ubuntu使用cmake和vscode开发自己的项目,引用自己的头文件和openCV

    创建文件夹 继续创建include 和 src文件夹,形成如下的目录结构 用vscode打开项目 创建add.h add.cpp main.cpp 形成这样的目录结构 在my_proj中创建CMakeLists.txt,写入如下内容 BUILD_TYPR 设置为Debug可以打断点调试 在my_proj中创建build.sh,写入如下内容 修改build.sh文件的权限 运行build.sh 在

    2024年02月07日
    浏览(45)
  • VsCode CMake调试QT QString等变量不显示具体值,调试中查看qt源码 (可视化调试配置Natvis)

    遇到的问题 当我们在VsCode使用CMake来调试QT程序时,可能会出现变量是十六进制的地址,而看不到具体的值。例如: 如何解决 这时候需要手动设置一下 natvis (资源以上传,可以直接下载) 在 .vscode 文件下找到 settings.json 文件 在 settings.json 文件中加入下述代码 稍微解释一下

    2024年01月25日
    浏览(38)
  • CMake学习笔记-VSCode使用Cmake编译C++工程

    Win + MinGW + CMake + Git 官方教程1: https://cmake.org/cmake/help/latest/guide/tutorial/A%20Basic%20Starting%20Point.html 官方教程2: https://cmake.org/cmake/help/book/mastering-cmake/cmake/Help/guide/tutorial/index.html 官方练习材料1:https://github.com/Kitware/CMake.git 官方练习材料2:https://github.com/Kitware/CMake/blob/master/Help/guide

    2024年02月11日
    浏览(61)
  • VSCode之CMake使用

    下载 对应平台的VScode 安装C++扩展 安装Cmake 工具扩展 并行需要安装 Cmake,编译器,调试器和构建工具 虽然咱们使用VSCode编辑代码,但是 编译、调试工作,却是使用的是 系统的 编译器、调试器和像Cmake这样的构建工具。 因此也要做 针对性检查 ,我们这里就略过了。 针对新项

    2024年02月16日
    浏览(37)
  • ubuntu 搭建 cmake + vscode 的 c/c++ 开发环境

    clang-format c++ 整合 略 只需要安装如下两个插件即可 c/c++ 扩展是为了最基本的代码提示和调试支持 cmake language support 是为了提示 CMakeLists.txt 脚本 有可能安装了 cmake language support 还是没有代码提示, 注意配置 cmake 路径 main.cpp CMakeLists.txt 此时可以通过 终端 菜单的 运行任务 来运

    2024年02月08日
    浏览(49)
  • VSCODE使用CMAKE显示命令无法找到

    背景:使用了code server,安装CMAKE和CMAKE TOOLS,但是通过ctrl+shift+p打开命令面板,运行随便一个cmake指令,都出现了指令无法找到。具体为“命令\\\"CMake: 配置\\\"导致错误 (command ‘cmake.configure’ not found)”。 C++工程 通过C++ Create project创建要给C++工程,里面创建好了src、include、lib和

    2024年01月18日
    浏览(43)
  • c++项目环境搭建(VMware+linux+ubantu+vscode+cmake)

    想运行一个c++项目,但是环境怎么整呢?b站走起!!! 链接:https://pan.baidu.com/s/1XJbR2F1boQ-CqV8P71UOqw  提取码:swin 八分钟完成VMware和ubuntu系统安装_哔哩哔哩_bilibili 按照视频来就行,别直接在计算机上安装linux系统,呜呜呜~~~找到一个博客,我跟着走之后发现硬盘被格式化了,

    2024年02月05日
    浏览(42)
  • VSCode+CMake+Arm GNU Toolchain搭建GD32开发环境

    一个串口收发简单例子。 https://github.com/Huffer342-WSH/GD32_CMake_Example 可以下载该工程,稍微了解一点cmake就可以简单修改直接使用。 GD32 CMake example 使用到的工具 编译与烧录 命令行 VSCode 调试 配合VSCode的marus25.cortex-debug插件实现调试功能 RTT使用方法 marus25.cortex-debug 手动连接 注意

    2024年02月11日
    浏览(40)
  • 测试驱动的嵌入式开发 002:VSCode + CMake + Unity 环境搭建

    本文是对《测试驱动的嵌入式 C 语言开发》第二章的实践。 这部分参考博文《基于Windows 的 VS Code C/C++ 编译环境搭建》。 安装 CMake ,在官网下载最新安装包。安装时选择 对所有用户添加 CMake 到系统 PATH 。 安装以下插件: CMake:VSCode 的 CMake 语言支持插件 CMake Tools:对插件

    2023年04月18日
    浏览(41)
  • ubuntu 上vscode使用cmake编译运行c++程序

    参考:ubuntu 上vscode使用cmake编译运行c++程序_vscode ubuntu运行c++程序_SCH0的博客-CSDN博客 文章是对官方过程的翻译: Get started with CMake Tools on Linux

    2024年02月07日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包