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.hqwc.cn/news/317292.html

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

相关文章

stable diffusion 基础教程-提示词之光的用法

基图 prompt: masterpiece,best quality,1girl,solo,looking at viewer,brown hair,hair between eyes,bangs,very long hair,red eyes,blush,bare shoulders,(white sundress),full body,leaning forward,medium breasts,unbuttoned clothes,Negative prompt: EasyNegativ…

机器学习与深度学习——使用paddle实现随机梯度下降算法SGD对波士顿房价数据进行线性回归和预测

文章目录 机器学习与深度学习——使用paddle实现随机梯度下降算法SGD对波士顿房价数据进行线性回归和预测一、任务二、流程三、完整代码四、代码解析五、效果截图 机器学习与深度学习——使用paddle实现随机梯度下降算法SGD对波士顿房价数据进行线性回归和预测 随机梯度下降&a…

KBDSMSFI.DLL文件缺失,软件或游戏无法启动,怎样快速修复?试试这些方法

很多用户在日常使用电脑&#xff0c;启动游戏或软件的时候&#xff0c;Windows桌面会弹出错误提示框“KBDSMSFI.DLL文件缺失&#xff0c;软件无法启动或运行&#xff0c;请尝试重新安装解决”。 之所以会出现错误提示&#xff0c;是因为Windows在运行某系软件或游戏的时候&…

nn.Dropout、DropPath的理解与pytorch代码

文章目录 理论dropoutDropPath 代码问题&#xff1a;dropout中为什么要除以 keep_prob? ​在vit的代码中看到了DropPath&#xff0c;想知道DropPath与nn.Dropout()有什么区别&#xff0c;于是查阅相关资料记录一下。 理论 dropout ​dropout是最早的用于解决过拟合的方法&am…

KBDPL.DLL文件丢失,软件游戏无法启动,修复方法

不少小伙伴&#xff0c;求助说遇到Windows弹窗提示“KBDPL.DLL文件丢失&#xff0c;应用无法启动的问题”&#xff0c;不知道应该怎么修复&#xff1f; 首先&#xff0c;先来了解“KBDPL.DLL文件”是什么&#xff1f; kbdpl.dll是Windows操作系统的一部分&#xff0c;是一个动…

vue3 基础+进阶(三、项目篇:状态管理库、路由以及一些基本配置)

目录 第三章 状态管理库:Pinia 3.1 创建空Vue项目并安装Pinia 3.1.1 创建空Vue项目 3.1.2 安装Pinia以及持久化工具 3.2 使用pinia 3.1.1 使用案例 3.1.2 规范问题 3.1.3 简化&#xff1a;结构赋值 第四章 Vue3的Router路由理解&#xff08;与vue2类比&#xff09; …

DHCP定义

DHCP&#xff08;动态主机配置协议&#xff09;是一个局域网的网络协议。指的是由服务器控制一段IP地址范围&#xff0c;客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。默认情况下&#xff0c;DHCP作为Windows Server的一个服务组件不会被系统自动安装&#…

关于标准那些事——第六篇 四象之“朱雀”(要素的表述)

两仪生四象——东方青龙&#xff08;木&#xff09;、西方白虎&#xff08;金&#xff09;、南方朱雀&#xff08;火&#xff09;、北方玄武&#xff08;水&#xff09; 分别对应标准编写之四象——层次的编写、要素的编写、要素的表述、格式的编排。 今天来分享一下 要素的表…

Java项目:106SpringBoot理财管理系统(含论文)

博主主页&#xff1a;Java旅途 简介&#xff1a;分享计算机知识、学习路线、系统源码及教程 文末获取源码 一、项目介绍 理财管理系统基于SpringBootMybatis开发&#xff0c;功能完整&#xff0c;页面简洁&#xff0c;系统分为管理员和普通用户两种角色。 管理员功能如下&…

kbdnso.dll文件缺失,软件或游戏报错的快速修复方法

很多小伙伴遇到电脑报错&#xff0c;提示“kbdnso.dll文件缺失&#xff0c;程序无法启动执行”时&#xff0c;不知道应该怎样处理&#xff0c;还以为是程序出现了问题&#xff0c;想卸载重装。 首先&#xff0c;先要了解“kbdnso.dll文件”是什么&#xff1f; kbdnso.dll是Win…

java数据结构与算法刷题-----LeetCode70. 爬楼梯

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 很多人觉得动态规划很难&#xff0c;但它就是固定套路而已。其实动态规划只…

今天用vite新建的vue3的项目 启动遇到报错

UnhandledPromiseRejectionWarning: SyntaxError: Unexpected token ??at Loader.moduleStrategy (internal/modules/esm/translators.js:145:18) (Use node --trace-warnings ... to show where the warning was created) (node:30304) UnhandledPromiseRejectionWarning: U…