vscode + CMake 构建C语言项目

news2024/11/25 13:00:34

文章目录

      • 1. 所需工具
      • 2. 配置
        • 1. 编写顶级目录下的 CMakeLists.txt
        • 2. 编写子目录 src 里的 CMakeLists.txt
        • 3. 添加测试文件
        • 4. 开始构建

1. 所需工具

  • Visual Stduio Code(vscode)

  • CMake

    • 简介: CMake 是一个跨平台的 构建工具,用于 自动 生成项目构建文件。它支持多种操作系统和构建系统,并提供简洁的语法和命令来定义项目的构建过程、源代码文件和依赖关系。CMake 可以根据 CMakeLists.txt 文件自动生成适合不同构建系统的构建文件,并支持多配置构建。

    • 下载官网:点击跳转
      Snipaste_2023-05-29_22-50-44.png

  • vscode 插件:CMake,CMakeTools

2. 配置

文件架构如下:

temp
	CMakeLists.txt
	\---src
		  CMakeLists.txt
	      hello.c

1. 编写顶级目录下的 CMakeLists.txt

# 指明项目所需 cmake 的最低版本
cmake_minimum_required(VERSION 3.25)

# 项目名称 + 构建语言(这里为C语言)
project(temp C)

# 添加的子目录构建规则
add_subdirectory(src)

2. 编写子目录 src 里的 CMakeLists.txt

# 所需 CMake 的最低版本
cmake_minimum_required(VERSION 3.25)

# 设置项目名称
project(temp C)

# 添加可执行文件
add_executable(hello hello.c)

# 为目标(XX)设置属性(输出路径)
# PROPERTIES:后接目标对应属性
# RUNTIME_OUTPUT_DIRECTORY:属性,表示源文件编译后输出的文件存放的目录
# CMAKE_BINARY_DIR/bin:上面属性的值,这里表示构建目录(build目录,CMake 自动生成的目录)下的 bin 文件夹
set_target_properties(hello PROPERTIES
    RUNTIME_OUTPUT_DIRECTORY CMAKE_BINARY_DIR/bin
)

3. 添加测试文件

#include <stdio.h>

int main () {
    printf("Hello, world!\n");
    return 0;
}

4. 开始构建

  • Ctrl + Shift + P 打开控制面板输入:CMake: Cofigure,然后点击下拉列表中的这一项
    Snipaste_2023-05-29_23-09-01.png

  • 随后出现一个新的下拉列表,在其中选择你的 gcc(编译器)版本,如果找不到就先点击 “Scan for kits…” 那个,然后重复这两步操作
    Snipaste_2023-05-29_23-09-54.png

  • 点击状态栏(最下方)里的 “Build”,开始架构
    Snipaste_2023-05-29_23-10-40.png

  • 架构成功
    Snipaste_2023-05-29_23-11-02.png

  • 然后可以点击状态栏里的 “debug” 和 “run” 图标,进行“调试”或者“运行”,也可以用快捷键:Ctrl + F 5 F_5 F5(调试),Shift + F 5 F_5 F5(运行)
    Snipaste_2023-05-29_23-11-17.png

  • 运行结果会显示在 vscode 下方的终端窗口中
    Snipaste_2023-05-29_23-11-38.png

  • 调试结果
    Snipaste_2023-05-29_23-12-02.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/586547.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[论文阅读73]Prefix-Tuning:Optimizing Continuous Prompts for Generation

1. 基本信息 题目论文作者与单位来源年份Prefix-Tuning&#xff1a;Optimizing Continuous Prompts for GenerationXiang Lisa Li等 Stanford UniversityAnnual Meeting of the Association for Computational Linguistics2021 Citations 1009, References 论文链接&#xf…

基于java的超市管理系统设计与实现

摘 要 随着小型超市规模的发展不断扩大&#xff0c;商品数量急剧增加&#xff0c;有关商品的各种信息量也成倍增长&#xff0c;传统的人工记忆方式也慢慢的无法适应形势的变化。随着信息技术的发展&#xff0c;计算机已被广泛的用于社会的各个领域&#xff0c;成为推动社会发…

EMNLP - 征集系统演示

Call For System Demonstrations - EMNLP 2023 EMNLP 2023 系统演示计划委员会邀请演示计划的提案。演示范围从早期研究原型到成熟的生产就绪系统。特别感兴趣的是公开可用的开源或开放访问系统。鉴于自然语言处理领域的理论和应用研究的现状&#xff0c;我们还强烈鼓励展示技术…

利用画图以及代码分析详细解读外排序的实现过程

外排序的实现 思想代码分析完整代码 如果有海量数据需要排序&#xff0c;而在内存中放不下这么多数据&#xff0c;因此就不能使用内排序&#xff08;直接插入排序&#xff0c;希尔排序&#xff0c;堆排序&#xff0c;快速排序&#xff0c;归并排序等等&#xff09;。关于想了解…

Java利用JOL工具分析对象分布

对象的组成 对象头[Header] Markword&#xff1a;存储对象自身运行时数据如hashcode、gc分代年龄等&#xff0c;64位系统总共占用8个字节&#xff0c;关于Markword详细内存分布如下 类型指针&#xff1a;对象指向类元数据地址的指针&#xff0c;jdk8默认开启指针压缩&#xff…

算法基础学习笔记——⑫最小生成树\二分图\质数\约数

✨博主&#xff1a;命运之光 ✨专栏&#xff1a;算法基础学习 目录 ✨最小生成树 &#x1f353;朴素Prim &#x1f353;Kruskal算法 ✨二分图 &#x1f353;匈牙利算法 ✨质数 &#x1f353;&#xff08;1&#xff09;质数的判定——试除法 &#x1f353;&#xff08;2&…

简单认识OSI(计算机网络分层)七层模型

前言 学校上课讲的太笼统啥也不是&#xff0c;自己学的太玄学似懂非懂突然在看到了一篇公众文文章。文章从初始到现在&#xff0c;步步为营的遇到一个解决一个前人的问题&#xff0c;有了细致入微的讲述&#xff0c;把之前学的死东西都连起来了。 如果让你来设计网络https://m…

chatgpt赋能python:Python取余数:介绍和实际应用

Python取余数&#xff1a;介绍和实际应用 Python是一种高级编程语言&#xff0c;其灵活性和多功能性使其成为开发者的首选之一。在Python中&#xff0c;取余数是常见的数学运算之一&#xff0c;这个操作在编写程序时非常有用。在本文中&#xff0c;我们将介绍Python中的取余数…

chatgpt赋能python:Python中单行输出的使用方法

Python中单行输出的使用方法 Python是广泛使用的高级编程语言之一&#xff0c;具有易于学习、可读性强和简单易用等优点。在Python编程中&#xff0c;我们经常需要输出文本内容&#xff0c;而Python中单行输出便是一个非常重要的功能。 什么是单行输出 单行输出是指将多个元…

TDengine 深入解析缓存技术

TDengine是一款高性能的物联网大数据平台。为了高效处理时序数据&#xff0c;TDengine中大量用到了缓存技术&#xff0c;自己实现了哈希表、缓存池等技术。本文会为大家讲解TDengine中用到的这些缓存技术。 首先会介绍一下什么是缓存&#xff0c;常用的缓存技术&#xff0c;最后…

想知道怎么翻译多个文本?我教你三个好方法吧

随着电子商务的全球化发展&#xff0c;越来越多的企业意识到将产品推向全球市场的重要性。在全球市场中&#xff0c;各种语言和文化的消费者都存在着巨大的潜在需求。为了吸引和服务这些不同语言的客户&#xff0c;企业需要采取一系列的措施&#xff0c;其中翻译是至关重要的一…

科技发展的那些事儿

近30年来&#xff0c;科技发展取得了惊人的成就&#xff0c;涉及范围广泛&#xff0c;包括计算机科学、通讯技术、生物医学、能源等多个领域。本文将列举近30年来科技发展的重要事件&#xff0c;并探讨这些事件对我们的生活、工作和社会产生的影响。 1991年&#xff0c;Linux操…

chatgpt赋能python:Python中可以用八进制表示整数吗?

Python中可以用八进制表示整数吗&#xff1f; Python是一种流行的动态编程语言&#xff0c;它支持许多整数表示方法。八进制是一种表示整数的方法&#xff0c;那么Python中可以使用八进制表示整数吗&#xff1f;本文将探讨这个问题。 什么是八进制&#xff1f; 在计算机科学…

基于SSM的服装设计供需系统设计与实现

摘 要&#xff1a;作为服装设计的重要形式之一&#xff0c;服装具有显著的审美性&#xff0c;是人类情感表达不可忽视的代表形态。但在新时期背景下&#xff0c;随着服装设计的进一步优化&#xff0c;服装设计创新融合强度也随之增强。本文就服装设计供需系统进行深入探究。 服…

chatgpt赋能python:如何在Python中去掉逗号

如何在Python中去掉逗号 在Python编程中&#xff0c;逗号是一个非常常见的符号&#xff0c;它通常用于分隔多个变量或值。然而&#xff0c;有时候我们需要从文本中去掉逗号&#xff0c;以便更好地处理数据。那么在Python中&#xff0c;如何去掉逗号呢&#xff1f;接下来&#…

华为OD机试真题B卷 Java 实现【停车场车辆统计】,附详细解题思路

一、题目描述 特定大小的停车场&#xff0c;数组cars[]表示&#xff0c;其中1表示有车&#xff0c;0表示没车。 车辆大小不一&#xff0c;小车占一个车位&#xff08;长度1&#xff09;&#xff0c;货车占两个车位&#xff08;长度2&#xff09;&#xff0c;卡车占三个车位&a…

idea使用Alibaba Cloud Toolkit插件远程操作Docker

idea使用Alibaba Cloud Toolkit插件远程操作Docker 前言 从github下载的开源项目源码&#xff0c;你基本上都能在项目根目录下发现会有个Dockerfile文件&#xff0c;Dockerfile文件是记录构建docker容器的构建命令&#xff0c;用途&#xff1a;一般用来将本地的jar包远程传输到…

内存对齐原则

struct &#xff08;1&#xff09;结构体第一个数据成员放在offset为0的地方&#xff0c;后面每个成员相对于结构体首地址的偏移量&#xff08;offset&#xff09;都是成员大小&#xff08;该变量类型所占字节&#xff09;的整数倍&#xff0c;如有需要编译器会在成员之间加上填…

中国人工智能学会主办!真实AIGC业务数据驱动,欢迎全球开发者参加

近期&#xff0c;由百度商业联合中国人工智能学会举办、NVIDIA提供战略支持&#xff0c;百度飞桨承办的“百度商业AI技术创新大赛”正式启动&#xff0c;启动会现场&#xff0c;中国工程院院士、中国人工智能学会理事长、清华大学信息科学技术学院院长戴琼海院士通过视频方式对…

chatgpt赋能python:在Python中一行书写两条语句:提高代码效率的好策略

在Python中一行书写两条语句&#xff1a;提高代码效率的好策略 从一开始Python就是因为简单易用、快速开发、名字有趣等因素而受到开发者的喜爱。当然&#xff0c;解释型语言也是Python深受欢迎的原因之一&#xff0c;你可以在Linux、Windows、Mac等各种平台上运行Python脚本&…