c语言- 如何构建CMake项目(Linux/VSCode)

目录

linux(vscode)构建C语言CMake项目

1. 检查linux是否下载cmake,否则执行下列代码

2. 在vscode下载cmake的插件CMake Tools

3. 构建项目(项目结构)

4. 进行cmake配置

1. 在VS Code中按下ctrl + shift + p键,然后输入Cmake:Q

2. 点击CMake:快速入门,此时显示提供项目名

3. 确认项目

4. 选择创建可执行文件

5. 不知道是啥,按需选取,不需要则不选,直接点击确定

 6. 如若新的预设也没有,则点击空白处取消

5. 构建与调试项目

1. 在VS Code上按下F5,选择CMake调试程序选项

2. 按下ctrl + shift + b (调试项目)(目的为了生成tasks.json)

6. CMakeFile.txt文件

7. 编译 


linux(vscode)构建C语言CMake项目

1. 检查linux是否下载cmake,否则执行下列代码

sudo apt install cmake

2. 在vscode下载cmake的插件CMake Tools

3. 构建项目(项目结构)

1. bin是编译后的文件存放处

2. inc/inner是头文件存放处

3. src则是代码存放处

4. build则是构建文件存放处(存放的系统构建文件/插件构建文件)

5. lib可以理解为依赖库

还有后续文件,我会增加

4. 进行cmake配置

1. 在VS Code中按下ctrl + shift + p键,然后输入Cmake:Q

2. 点击CMake:快速入门,此时显示提供项目名

名字可以随便起,暂时我是这样理解的,输入完成后,按下enter确认

3. 确认项目

 是c项目就选第二个,是c++项目就选择第一个

4. 选择创建可执行文件

5. 不知道是啥,按需选取,不需要则不选,直接点击确定

 6. 如若新的预设也没有,则点击空白处取消

会自动生成CMakeLists.txt文件

main.c文件(不需要)

5. 构建与调试项目

1. 在VS Code上按下F5,选择CMake调试程序选项

选择弹出的第一个

有的用户会显示默认选项,选择默认选项即可

不管怎么着,要把launch.josn调出来,如果调不出来,那么复制一份

因为你会再改

我使用的lldb创建成功的,然后点击页面的添加配置,或者按照我的,页面直接复制也好。

 

或复制以下文本,注意代码中的注释。

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        
        {
            "name": "(gdb) 启动",
            "type": "cppdbg",
            "request": "launch",
            //此处改成你的程序路径,${workspaceFolder}/bin/main,这个main编译后的文件存放出(二进制文件)
            "program": "${workspaceFolder}/bin/main",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ]
        }

    ]
}
2. 按下ctrl + shift + b (调试项目)(目的为了生成tasks.json)

点击第二个CMake模板生成的右边的小齿轮,生成tasks.json文件

把下方代码复制进tasks.json

// 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"
            ]
        }
    ]
}

此时编译即可成功

6. CMakeFile.txt文件

把文件里面的内容更换成,下方的数据即可

cmake_minimum_required(VERSION 3.10.0) # CMake版本
project(t1 VERSION 0.1.0 LANGUAGES C) # 项目版本

# debug模式
SET(CMAKE_BUILD_TYPE Debug) # debug模式

# SET(CMAKE_BUILD_TYPE Release) #Release模式

# 暂时不管,测试
include(CTest)
enable_testing()

# 2.需要的依赖库 现在没有

# 3.设置可执行文件与链接库保存的路径
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)

# 4.设置头文件目录使得系统可以找到对应的头文件
include_directories(
    ${PROJECT_SOURCE_DIR}/inc/inner # 自己目录的头文件
    ${EIGEN3_INCLUDE_DIR} # 其他系统目录的头文件 也可以直接写路径/usr/include/eigen3
    ${Pangolin_INCLUDE_DIRS}
)

# 5.编译动态库并链接库文件

# 6.生成可执行文件
# 选择需要编译的源文件,有几个文件写几个
# add_executable(my src/main.c src/test.c)
# 扫描src目录下的所有C文件
aux_source_directory(src SRC_FILES)
add_executable(main ${SRC_FILES})

set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})

# 配置cmake项目c语言的版本 11
set(CMAKE_C_STANDARD 11)

# 设置交叉编译器的位置
set(CMAKE_C_COMPILER gcc)
include(CPack)

7. 编译 

在common文件与you.c,main.c文件里面写入几个测试方法,然后点击CMakeLists.txt文件按下ctrl + shift + b,构建文件,然后打开终端,输入./bin/mian执行文件,即可输出

<think>好的,用户想在Linux环境下使用VSCode进行C语言开发,需要配置编写和调试C程序。首先,我得回想一下相关的步骤和注意事项。根据之前提供的引用信息,用户提到VSCode调试C++程序需要配置,而C语言可能类似。引用[2]中提到了远程调试的情况,但用户这里可能是在本地Linux使用,不过配置流程可能有共通之处。 首先,用户需要确保Linux环境已经安装了必要的编译和调试工具,比如gcc和gdb。对于C语言,gcc是编译器,gdb是调试器。需要检查这些是否已安装,如果没有,需要通过包管理器安装,比如sudo apt install build-essential gdb。 接下来是VSCode的安装。用户可能在Linux上已经安装了VSCode,如果没有,可以从官网下载.deb或.rpm包,或者使用snap安装。安装完成后,需要安装C/C++扩展,由Microsoft提供,这个扩展支持IntelliSense、调试等功能。 然后,配置工作区。用户的项目结构可能需要一个.vscode文件夹,里面包含tasks.json和launch.json。tasks.json用于配置编译任务,比如调用gcc编译源代码。launch.json用于配置调试会话,指定调试器路径、程序参数等。 引用[2]中提到CMakeLists.txt,如果用户项目使用CMake,可能还需要配置CMake Tools扩展。但如果是简单的C程序,可能不需要CMake,直接使用gcc编译即可。 调试配置方面,需要确保launch.json中的program路径正确指向生成的可执行文件,preLaunchTask对应tasks.json中的编译任务名称。可能需要设置断点,启动调试时,VSCode会编译代码并启动gdb进行调试。 可能遇到的问题包括路径错误、编译器找不到头文件、权限问题等。需要确保编译命令正确,比如包含必要的头文件目录或链接库。此外,用户可能需要配置c_cpp_properties.json来指定包含路径,以便IntelliSense正常工作。 用户可能还需要了解如何设置断点、查看变量、单步执行等调试操作。VSCode的调试界面提供了这些功能的图形化按钮,方便使用。 总结步骤:安装工具链→安装VSCode和扩展→配置编译和调试任务→编写代码→调试。需要确保每一步的配置正确,尤其是JSON文件中的路径和参数。可能还需要根据具体项目调整配置,比如多文件编译或使用Makefile。</think>### 在 Linux 环境下配置 VSCode 编写和调试 C 程序的步骤 #### 1. 安装必要工具链 ```bash sudo apt update sudo apt install build-essential gdb # 安装 gcc/g++/gdb ``` #### 2. 安装 VSCode 和扩展 - 从 [VSCode 官网](https://code.visualstudio.com/) 下载安装包 - 安装 `C/C++` 扩展 (Microsoft 官方扩展) - 可选安装 `Code Runner` 扩展(快速运行代码) #### 3. 配置项目结构 建议目录结构示例: ``` project/ ├── .vscode/ │ ├── tasks.json # 编译配置 │ ├── launch.json # 调试配置 │ └── c_cpp_properties.json # 头文件路径配置 ├── src/ │ └── main.c # 源代码 └── bin/ # 编译输出目录 ``` #### 4. 配置编译任务(tasks.json) ```json { "version": "2.0.0", "tasks": [ { "label": "build-c", "type": "shell", "command": "gcc", "args": [ "-g", // 生成调试信息 "${file}", // 当前文件 "-o", "${fileDirname}/../bin/${fileBasenameNoExtension}" ], "group": { "kind": "build", "isDefault": true } } ] } ``` #### 5. 配置调试设置(launch.json) ```json { "version": "0.2.0", "configurations": [ { "name": "C Debug", "type": "cppdbg", "request": "launch", "program": "${fileDirname}/../bin/${fileBasenameNoExtension}", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "preLaunchTask": "build-c", // 必须与 tasks.json 的 label 一致 "setupCommands": [ { "description": "启用整齐打印", "text": "-enable-pretty-printing", "ignoreFailures": true } ] } ] } ``` #### 6. 调试流程演示 1. 创建 `main.c` 编写测试代码 2. 按 `F5` 启动调试 3. 使用调试工具栏进行: - 断点设置 - 单步调试(F10/F11) - 变量监视 - 调用栈查看 ### 关键配置说明 1. `-g` 编译参数是生成调试信息的关键[^2] 2. 调试时需要确保程序路径正确指向编译输出目录 3. 多文件项目需修改编译命令为: ```bash gcc -g src/*.c -Iinclude -Llib -o bin/program ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

其实我今天想吃河北正宗安徽牛肉板面

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值