CMake入门教程【基础篇】CMake+Linux gcc构建C++项目

文章目录

  • 1.概述
  • 2.GCC与CMake介绍
  • 3.安装CMake和GCC
  • 4.代码示例

1.概述

在Linux环境下,使用CMake结合GCC(GNU Compiler Collection)进行项目构建是一种常见且高效的方法。CMake作为一个跨平台的构建系统,可以生成适用于不同编译器的构建文件,而GCC是Linux下最常用的C++编译器。本教程将介绍如何在Linux上使用CMake和GCC构建C++项目。

在这里插入图片描述
在这里插入图片描述

2.GCC与CMake介绍

  • GCC

GCC(GNU Compiler Collection)是一款广泛使用的编译器套件,支持多种编程语言,包括C、C++、Objective-C、Fortran、Ada、Go和D等。它是自由软件基金会(FSF)的GNU项目的一部分,作为许多Linux发行版的标准编译器,也可在其他操作系统中使用

  • CMake

CMake是一个开源的跨平台自动化构建系统,它使用配置文件(CMakeLists.txt)来管理项目的构建过程。CMake不直接构建项目,而是生成标准的构建文件,如Makefile,供编译器使用。

3.安装CMake和GCC

这个build-essential包包括GCC和G++编译器以及其他一些必需的工具,如make。

  • 在Debian/Ubuntu上安装:
   sudo apt-get updatesudo apt-get install build-essential
  • 在Fedora上安装:
sudo dnf groupinstall "Development Tools"
sudo dnf install gcc-c++
  • 查看版本,包括gcc;g++;make;cmake
gcc --version
g++ --version
make --version
cmake --version

4.代码示例

  • CMakeLists.txt
codecmake_minimum_required(VERSION 3.10)
project(MyProject)add_executable(MyApp main.cpp)
  • main.cpp
#include <iostream>int main() {std::cout << "Hello, CMake and GCC!" << std::endl;return 0;
}
  • 构建项目

在项目根目录中,运行以下命令来生成构建文件并编译项目:

cmake .
make

这将使用CMake生成Makefile,然后使用make命令进行构建。

  • 运行项目
./main

控制台输出

Hello, CMake and GCC!

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

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

相关文章

面试经典150题(55-58)

leetcode 150道题 计划花两个月时候刷完&#xff0c;今天&#xff08;第二十四天&#xff09;完成了4道(55-58)150&#xff1a; 55.&#xff08;19. 删除链表的倒数第 N 个结点&#xff09;题目描述&#xff1a; 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff…

渗透第四天

常用的对称加密算法有&#xff1a;DES、3DES、RC2、RC4、AES 常用的非对称加密算法有&#xff1a;RSA、DSA、ECC 使用单向散列函数的加密算法&#xff08;摘要算法&#xff09;&#xff1a;MD5、SHA 密码存储加密 md5 32位或者16位 0-9 a-f 所组成的字符串 不可…

JWT+Redis 实现接口 Token 校验

1、业务逻辑 有一些接口&#xff0c;需要用户登录以后才能访问&#xff0c;用户没有登录则无法访问。 因此&#xff0c;对于一些限制用户访问的接口&#xff0c;可以在请求头中增加一个校验参数&#xff0c;用于判断接口对应的用户是否登录。 而对于一些不需要登录即可访问的接…

基于SSM的网络游戏交易平台设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

java常见面试题:什么是异常?Java中的异常有哪些分类?

异常是一个汉语词语&#xff0c;读音为y chng&#xff0c;指非正常的&#xff1b;不同于平常的&#xff1b;非常。在Java中&#xff0c;异常&#xff08;Exception&#xff09;是程序在运行过程中出现的不正常情况&#xff0c;例如除以零、数组越界等。异常分为两大类&#xff…

湖南大学-算法设计与分析-2023期末考试【原题】

前言 21&#xff1a;00刚刚结束的考试&#xff0c;凭着回忆把题目重现出来了&#xff0c;在复习的时候根本找不到往年的试卷&#xff0c;希望这张回忆的试卷能帮助到下一届的同学。知道题目基本上就能做出来了&#xff0c;但是不知道是真的做不出来&#xff0c;我就不给答案了…

【软件工程】走进敏捷开发:灵活、协作、迭代的软件工艺之旅

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; 软件工程 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言&#xff1a; 正文 敏捷开发&#xff08;Agile Development&#xff09; 详细介绍&#xff1a; 优缺点&#xff1a; 优点&#xf…

新概念英语第二册(17)

【New words and expressions】生词和短语&#xff08;5&#xff09; appear v. 登场&#xff0c;扮演 stage n. 舞台 bright adj. 鲜艳的 stocking n. &#xff08;女用…

【Mybatis】深入学习MyBatis:高级特性与Spring整合

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; Mybatis ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 高级特性 1 一级缓存和二级缓存 一级缓存 二级缓存 2 延迟加载 5 整合Spring 1 MyBatis-Spring模块 2 事务管理 结…

【Spark精讲】RDD缓存源码分析

面试题&#xff1a;cache后面能不能接其他算子&#xff0c;它是不是action操作&#xff1f; 能&#xff0c;不是action算子。 源码解析 RDD调用cache或persist之后&#xff0c;会指定RDD的缓存级别&#xff0c;但只是在成员变量中记录了RDD的存储级别&#xff0c;并未真正地…

SQL优化:物化视图

在前面一篇内容中&#xff0c;我们讲解了索引的创建。索引作为数据的目录&#xff0c;占用独立的存储空间&#xff0c;可以帮助我们提高查询的速度。 除了使用索引&#xff0c;还有一种方法可以加速查询&#xff0c;尤其是当我们的查询中使用了各种聚合函数&#xff0c;或者进…

[情商-6]:识别职场中、情侣之间的暗捧、暗拍、暗赞、暗赏,保持良好的关系

目录 1. 发现他们的优点和长处 2. 保持积极的态度 3. 赠送小礼物 4. 提供有用的建议 5. 维护他们的荣誉 6. 询问他们的意见&#xff01;&#xff01;&#xff01; 7. 注意细节 8. 不要过度夸张 9. 尊重上司的权威 10. 保持适当的距离 前言&#xff1a; 技术人员常把…

pytest conftest定义一个fixtrue获取测试环境地址

方便全局切换地址 pytest.fixture() def config():data {测试环境: {A环境: 127.0.0.1,B环境: 127.0.0.2,C环境: 127.0.0.3,D环境: 127.0.0.4},}return data.get(测试环境, {}).get(A环境)import pytestdef test_case001(config):url http://str(config):8080/api/user/logi…

(2023|AABI,多模态信息瓶颈,变分近似,视觉语言模型可解释性)通过多模态信息瓶颈归因对图像文本表示的视觉解释

Visual Explanations of Image-Text Representations via Multi-Modal Information Bottleneck Attribution 公和众和号&#xff1a;EDPJ&#xff08;添加 VX&#xff1a;CV_EDPJ 或直接进 Q 交流群&#xff1a;922230617 获取资料&#xff09; 目录 0. 摘要 3. 通过多模态…

wy的leetcode刷题记录_Day70

wy的leetcode刷题记录_Day70 声明 本文章的所有题目信息都来源于leetcode 如有侵权请联系我删掉! 时间&#xff1a; 前言 目录 wy的leetcode刷题记录_Day70声明前言466. 统计重复个数题目介绍思路代码收获 70. 爬楼梯题目介绍思路代码收获 466. 统计重复个数 今天的每日一题…

Leetcode11-快乐数(202)

1、题目 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1&#xff0c;也可能是 无限循环 但始终变不到 1。 如果这个过程 结果为 1…

8K自动化测试面试题分享(有答案,非常详细)

关于自动化测试面试&#xff0c;会问到哪些问题呢&#xff1f;给大家简单总结了一下&#xff0c;每一个都是学员反馈过来的企业真题&#xff0c;相信对大家有帮助&#xff0c;最近有面试机会的&#xff0c;快来背一下答案吧 1、你会封装自动化测试框架吗&#xff1f; 这个问得…

华为月薪25K的自动化测试工程师到底要会那些技能!

​前言 3年自动化测试软件测试工程师职业生涯中&#xff0c;我所经历过的项目都是以自动化测试为主的。由于自动化测试是一个广泛的领域&#xff0c;我将自己的经验整理了一下分享给大家&#xff0c;话不多说&#xff0c;直接上干货。 自动化测试的目标和实践选择合适的自动化…

zookeeper 常见客户端介绍和使用 zkCli、自带API、 zkClient、Curator

文章目录 一、Zookeeper的命令行使用二、Zookeeper自带API的使用2.1 引入API2.1 API简单使用 三、Zookeeper三方客户端zkClient的使用3.1 引入依赖3.2 简单的使用案例四、Curator 客户端框架4.1 引入依赖4.2 简单使用案例 一、Zookeeper的命令行使用 ZooKeeper解压后&#xff…

使用Helmfile 管理helm charts

官网 ## https://github.com/helmfile/helmfile## 参考 https://cloud.tencent.com/developer/article/1766822 介绍 使用helmfile时&#xff0c;我们首先得了解helm的使用&#xff0c;以及如何开发一个helm chart。 helm是kubernetes的包管理工具。在实际的使用场景中我们涉…