当前位置: 首页 > news >正文

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执行文件,即可输出

http://www.xdnf.cn/news/542161.html

相关文章:

  • uniapp-商城-63-后台 商品列表(分类展示商品的删除)
  • [每日一题] 3355. 零数组变换 i
  • 如何删除 HP 笔记本电脑中的所有数据:3 种解决方案说明
  • [Java] idea的调试介绍
  • win7无线网络名称显示为编码,连接对应网络不方便【解决办法】
  • Journal of Real-Time Image Processing 投稿过程
  • 推扫式高光谱相机VIX-N230重磅发布——开启精准成像新时代
  • Python爬虫(30)Python爬虫高阶:Selenium+Scrapy+Playwright融合架构,攻克动态页面与高反爬场景
  • 数论:数学王国的密码学
  • 新凌印 4.2.0 | 国内短视频去水印下载~图集下载
  • CodeBuddy全新升级:体验Craft智能体的对话式编程革命
  • 在 Excel 中使用东方仙盟软件————仙盟创梦IDE
  • Awesome ChatGPT Prompts:释放AI对话潜力的开源利器
  • java每日精进 5.20【MyBatis 联表分页查询】
  • NODE-I916 I721模块化电脑发布,AI算力与超低功耗的完美平衡
  • Java 06API时间类
  • CHI中ordering的抽象
  • 第四章、SKRL(2): API(Models and Model instantiators)
  • 银行反欺诈理论、方法与实践总结(下):解决方案
  • 【动手学深度学习】1.1~1.2 机器学习及其关键组件
  • 珈和科技贺李德仁院士荣膺国际数字地球学会会士:以时空智能赋能可持续发展目标 绘就数字地球未来蓝图
  • 基于pycharm,python,flask,tensorflow,keras,orm,mysql,在线深度学习sql语句检测系统
  • HarmonyOS5云服务技术分享--云缓存快速上手指南
  • 创建型:建造者模式
  • 跨域_Cross-origin resource sharing
  • SpringBoot-6-在IDEA中配置SpringBoot的Web开发测试环境
  • Spring Boot 多参数统一加解密方案详解:从原理到实战
  • 物流项目第三期(统一网关、工厂模式运用)
  • 普通人如何开发并训练自己的脑力?
  • npm vs npx 终极指南:从原理到实战的深度对比 全面解析包管理器与包执行器的核心差异,助你精准选择工具