使用 CMake 和 Ninja 构建 C/C++ 项目的教程

使用 CMake 和 Ninja 构建 C/C++ 项目的教程

CMake 是一个跨平台的开源构建工具,它简化了项目的构建过程。而 Ninja 是一个快速、轻量级的构建系统,与 CMake 配合使用可以提高项目的构建效率。本教程将向你介绍如何使用 CMake 和 Ninja 来构建你的 C/C++ 项目。
在这里插入图片描述

1. 安装 CMake 和 Ninja

首先,确保你的系统中已经安装了 CMake 和 Ninja。你可以使用包管理器进行安装:

  • 在 Ubuntu 上:

    bashCopy code
    sudo apt-get install cmake ninja-build
    
  • 在 macOS 上,使用 Homebrew:

    bashCopy code
    brew install cmake ninja
    
  • 在 Windows 上,你可以使用 CMake 官网 下载并安装 CMake,而 Ninja 则可以通过 GitHub Release 下载预编译的二进制文件。

2. 创建 CMakeLists.txt 文件

在你的项目根目录下创建一个 CMakeLists.txt 文件。这个文件描述了项目的结构和构建过程。

cmakeCopy code
# CMake 最低版本要求
cmake_minimum_required(VERSION 3.12)# 项目名称
project(MyProject)# 添加可执行文件
add_executable(MyExecutable main.cpp)# 添加其他源文件、头文件等# 指定 C++ 标准
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

3. 创建构建目录

在你的项目根目录外,创建一个用于构建的目录。例如:

bashCopy code
mkdir build
cd build

4. 运行 CMake

在构建目录中运行 CMake 命令:

bashCopy code
cmake -G Ninja ..

这会生成 Ninja 所需的构建文件。

5. 运行 Ninja 构建

在构建目录中运行 Ninja 构建命令:

bashCopy code
ninja

这将编译并构建你的项目。

6. 运行可执行文件

构建完成后,你可以在构建目录中找到生成的可执行文件,然后运行它:

bashCopy code
./MyExecutable

通过按照以上步骤,你就成功使用 CMake 和 Ninja 构建了你的 C/C++ 项目。这个教程提供了一个基础的起点,你可以根据自己项目的需求进一步扩展和优化 CMakeLists.txt 文件。

7. 安装

ninja install

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

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

相关文章

设计模式:简单工厂、工厂方法、抽象工厂的区别

设计模式:简单工厂、工厂方法、抽象工厂的区别 简单工厂模式(Simple Factory Pattern) 描述: 简单工厂模式并不是严格意义上的设计模式,而更像是一种编程习惯或者说是一种创建对象的简单方式。它使用一个工厂类来创建…

SQL_DQL_执行顺序

SELECT 字段列表 4 1 FROM 表名列表 1 WHERE 条件列表 (可以有多个条…

金融科技革命:数字化如何塑造未来经济_光点科技

当今世界,数字化不仅是一种趋势,更是深刻重塑经济和金融领域的关键力量。在这个过程中,金融科技(FinTech)崭露头角,成为革命性变化的代名词。以下是数字化技术在经济和金融领域的几个关键应用,它…

YOLOv5独家原创改进:多层次特征融合(SDI)结合PConv、DualConv、GSConv,实现二次创新 | UNet v2最新论文

💡💡💡本文独家改进:多层次特征融合(SDI)高效结合DualConv、PConv、GSConv等实现二次创新 1)替代原始的Concat; 收录 YOLOv5原创自研 https://blog.csdn.net/m0_63774211/category_12511931.html 💡💡💡全网独家首发创新(原创),适合paper !!! 💡�…

LC1049. 最后一块石头的重量 II

代码随想录 class Solution {public int lastStoneWeightII(int[] stones) {int sum 0;for(int i : stones){sum i;}int target sum >> 1;int []dp new int[target1];for(int i 0 ; i < stones.length; i ){for(int j target ; j > stones[i] ; j --){dp[j] …

高度自适应scroll-view,uniapp项目

中间粉红的区域高度自适应,不管换什么机型&#xff0c;高度都自适应 <template><!-- 合同-待确认 --><view class"viewport"><!-- 上 --><view class"top-box"><!-- tab --><view class"tabs"><te…

C++八股——STL相关

C的STL&#xff08;Standard Template Library&#xff0c;标准模板库&#xff09;包括以下六大主要组件&#xff1a; 容器&#xff08;Containers&#xff09;&#xff1a; vector&#xff1a;动态数组&#xff0c;支持随机访问和高效内存管理。 list&#xff1a;双向链表&a…

美国PPI降温影响深远,美易平台展望金融市场新动向

近期&#xff0c;美国生产者价格指数&#xff08;PPI&#xff09;的最新数据显示出超出市场预期的降温迹象&#xff0c;这一变化对全球金融市场产生了深远的影响。据美国劳工部1月12日周五公布的数据&#xff0c;12月份的PPI同比增长1%&#xff0c;不仅低于预期的1.3%&#xff…

HTML5+CSS3+JS小实例:音频可视化

实例:音频可视化 技术栈:HTML+CSS+JS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><m…

C++学习笔记——私有继承、多重继承、类模板

目录 一、私有继承 二、多重继承 三、类模板 四、一个使用私有继承的示例代码 4.1代码 4.2输出结果 五、多重继承案列 六、类模板案例 C中的继承和模板是非常强大和灵活的特性&#xff0c;它们可以帮助我们实现代码复用、抽象和泛化等目标。本文将着重介绍私有继承、多…

class_1:qt的安装及基本使用方式

一、选择组件&#xff1a; 1、windows编译工具&#xff1a;MinGW 7.30 32-bit MinGW 7.30 64-bit 2、QT源代码&#xff1a;sources 3、QT的绘图模块&#xff1a;QT charts 4、QT虚拟键盘&#xff1a;QT Virtual Keyboard 5、QT Creational 4.12.2 GDB 二、新建QT项目 文…

Linux完全卸载Anaconda3和MiniConda3

如何安装Anaconda3和MiniConda3请看这篇文章&#xff1a; 安装Anaconda3和MiniConda3_minianaconda3-CSDN博客文章浏览阅读474次。MiniConda3官方版是一款优秀的Python环境管理软件。MiniConda3最新版只包含conda及其依赖项如果您更愿意拥有conda以及超过720个开源软件包&…

高通平台开发系列讲解(USB篇)adb function代码分析

文章目录 一、FFS相关动态打印二、代码入口三、ffs_alloc_inst四、ep0、ep1&ep2的注册五、读写过程沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本文主要介绍高通平台USB adb function代码f_fs.c。 一、FFS相关动态打印 目录:msm-4.14/drivers/usb/gadget/fun…

docker+jmeter实现windows作为主控机,linux作为负载机的分布式压测环境搭建

dockerjmeter实现windows作为主控机&#xff0c;linux作为负载机的分布式压测环境搭建 1、搭建环境说明2、windows主控机安装Jmeter3、linux负载机安装Jmeter3.1、安装docker环境3.2、使用docker安装jmeter 4、windows主控机分发测试任务 1、搭建环境说明 准备一台windows主机…

Linux: module: kheaders;CONFIG_IKHEADERS

文章目录 参考错误开一个玩笑。configcommit参考 https://github.com/iovisor/bcc/pull/2312 https://github.com/iovisor/bcc/pull/3588 https://bugs.gentoo.org/809347 https://lore.kernel.org/lkml/20190408212855.233198-1-joel@joelfernandes.org/ 错误 <built-in…

时间序列数据库选型: influxdb; netdiscover列出docker实例们的ip,docker管理工具lazydocker、scope

influxdb influxdb: 有收费版本、有开源版本 influxdb 安装、启动(docker) docker run -itd --name influxdb-dev -p 8086:8086 influxdb #influxdb的web客户端(端口8003)被去掉了 #8006是web-service端口#docker exec -it influxdb-dev bashinfluxdb 自带web界面 从后面的…

Rust-函数

简介 Rust的函数使用关键字fn开头。 函数可以有一系列的输入参数&#xff0c;还有一个返回类型。 函数体包含一系列的语句(或者表达式)。 函数返回可以使用return语句&#xff0c;也可以使用表达式。 Rust编写的可执行程序的入口就是fn main()函数。 以下是一个函数的示例…

复试 || 就业day15(2024.01.13)算法篇

文章目录 前言数组中第 K 个独一无二的字符串统计字符串中的元音子字符串检查两个字符串是否几乎相等统计出现过一次的公共字符串找出 3 位偶数找到和最大的长度为 K 的子序列 前言 &#x1f4ab;你好&#xff0c;我是辰chen&#xff0c;本文旨在准备考研复试或就业 &#x1f4…

Jenkins入门知识:什么是Jenkins?以及它的历史与发展

Jenkins是一个开源的自动化服务器。借助Jenkins&#xff0c;团队可以通过自动化来加速软件开发过程。Jenkins管理和控制整个生命周期中的软件交付过程&#xff0c;包括构建、文档、测试、打包、阶段、部署、静态代码分析等。 您可以设置Jenkins来监控GitHub、Bitbucket或GitLa…

openssl3.2 - 官方demo学习 - cms - cms_enc.c

文章目录 openssl3.2 - 官方demo学习 - cms - cms_enc.c概述笔记END openssl3.2 - 官方demo学习 - cms - cms_enc.c 概述 用证书对明文进行CMS加密 CMS操作过的最终内容(除了反操作(解压缩, 解密))都是可见字符(数据用base64过了一遍). 笔记 /*! \file cms_enc.c * \note o…