用Cmake构建第一个C++项目

ps:由于工作需求,需要涉及到跨平台。

概念

Cmake是一个款平台的构建工具,可以自动生成各种不同平台和编译器的构建脚本,使得项目在不同平台和编译器下都能够正常构建和运行。

  1. CMake有自己的一套语法,需要学习CMake的命令和变量等基本语法。
  2. CMakeLists.txt文件结构:CMake的配置文件是CMakeLists.txt文件,需要了解CMakeLists.txt文件的基本结构,如如何定义变量、如何定义可执行文件和库文件等。
  3. 编译选项:CMake支持各种编译选项,如编译器选项、链接选项等,需要了解这些编译选项的作用和使用方法。
  4. 多目录管理:CMake可以管理多个目录下的源文件和头文件,需要学习如何在CMake中定义子目录和管理多个目录下的源文件和头文件。
  5. 第三方库的使用:CMake可以很方便地管理和使用第三方库,需要学习如何在CMake中添加和使用第三方库。

实例(以macos为例和linux一样)

1、创建一个新的目录作为项目的根目录:newCMake

mkdir newCMake
cd newCMake

在这里插入图片描述

2、在项目跟目录下创建一个CMakeLists.txt文件,这是CMake的配置文件,用于描述项目的构建过程。

vim CMakeLists.txt

3、在项目跟目录下创建一个src目录,用于存放源代码文件。

mkdir src
cd src

在这里插入图片描述

4、在src目录下添加源代码文件:main.cpp

vim main.cpp

#include<iostream>
using  namespace std;
int main()
{
	cout<<"newCMake"<<endl;
}

在这里插入图片描述

5、在CMakeLists.txt文件中添加项目的配置信息:

cmake_minimum_required(VERSION 1.0)

project(newCMake)

add_executable(newCMake src/main.cpp)

在这个配置文件中,我们指定了项目的最低版本号为1.0,以及项目的名称newCMake。然后我们使用 add_executable 命令添加一个可执行文件,指定该文件的名称为 newCMake,源代码文件为 src/main.cpp
6、在项目根目录下创建一个build子目录,用于存放构建生成的中间文件。

mkdir build
cd build

在这里插入图片描述

7、在build目录下运行cmake ..命令,指定上一步创建的newCMake目录作为源代码目录。

cmake ..

8、运行make命令进行项目的构建

cmake

这样就可以构建项目,并生成可执行文件 newCMake

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

上海亚商投顾:两市成交创年内新高 人工智能再爆发

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 市场情绪三大指数今日高开高走&#xff0c;沪指震荡反弹逼近3300点&#xff0c;创业板指午后涨超1.7%&#xff0c;科创50指数…

springboot 配置文件、多环境配置、运行优先级

前言 提问&#xff1a;springboot项目&#xff0c;开发环境、测试环境和生产环境配置文件如何分开表示&#xff1f; 答&#xff1a;多profile文件方式 1、多环境配置&#xff08;profile&#xff09; 1.1、properties文件配置 application.properties&#xff1a;主配置文…

基于html+css的between布局

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

【算法系列之动态规划IV】完全背包

完全背包 解题思路 01背包的核心思路&#xff0c;为了保证每个物品仅被添加一次&#xff0c;01背包内嵌的循环是从大到小遍历。 for(int i 0; i < weight.size(); i) { // 遍历物品for(int j bagWeight; j > weight[i]; j--) { // 遍历背包容量dp[j] max(dp[j], dp…

【云原生】k8s集群命令行工具kubectl之应用部署命令详解

kubectl应用部署命令详解一、准备工作1.1、Replication Controller1.2、Deployment1.3、DaemonSet1.4、查看创建的svc和pod1.5、kubectl 命令自动补全设置二、应用部署命令2.1、diff2.2、apply2.3、replace2.4、rollout2.4.1、history2.4.2、pause2.4.3、resume2.4.4、restart2…

Java 常量池分析

Java常量池 常量池&#xff1a;存放所有常量 常量池是Class文件中内容最为丰富的区域。常量池对于Class文件中的字段和方法解析也有着至关重要的作用。 随着Java虚拟机的不断发展&#xff0c;常量池的内容也日渐丰富。可以说&#xff0c;常量池是整个Class文件的基石。 在版…

HMC717ALP3E-ASEMI代理ADI(亚德诺)车规级芯片HMC717ALP3E

编辑-Z HMC717ALP3E参数描述&#xff1a; 频率范围&#xff1a;4.8 - 6.0GHz 增益&#xff1a;12.5dB 噪声系数&#xff1a;1.3dB 输入回波损耗&#xff1a;8dB 输出回波损耗&#xff1a;13dB 1 dB压缩的输出功率&#xff08;P1dB&#xff09;&#xff1a;12dBm 饱和输…

2023首届大学生算法大赛 - 村庄

读题可以发现&#xff0c;如果两个村庄不能互相连通&#xff0c;那就算作一对 &#xff08;a<b&#xff09;。 显然是可以用floyd全局多源最短路来做的&#xff0c;如果不存在最短路&#xff0c;那么就是不能互通&#xff0c;但是这道题的数据范围N<10^5&#xff0c;跑f…

SpringCloud之Eureka原理分析与实战(注册与发现)

目录 1、从本质理解服务治理思想 2、为什么选择Spring Cloud服务治理组件 3、Spring Cloud Eureka服务发现 3.1 Eureka的优势 3.2 Eureka架构组成 3.3 搭建Eureka Server 实战 3.3.1 添加依赖 3.3.2 开启服务注册 3.3.3 添加YML配置 3.3.4 访问服务 3.4 搭建Eureka …

IT服务商服务运营方案--PIGOSS BSM +TOC 服务加工具的新型运维模式

该解决方案适用于各种数据中心端专业运维服务商&#xff0c;包括驻场服务商&#xff0c;MA服务商&#xff0c;ITO服务商&#xff0c;IDC服务商&#xff0c;云运维服务商等 PIGOSS 是专业服务商的共同选择 专业的服务团队离不开专业的技术平台和技术工具&#xff0c;PIGOSS TOC…

echarts柱状图

1、先展示效果图 2、直接上代码&#xff0c;copy代码进行调试便会懂&#xff08;导入echarts插件看之前的文章&#xff09; <template><div class"antigen-container"><div class"top-content"><span class"top-title"&g…

电商商品详情API接口,python请求示例说明

PC端商品详情接口&#xff0c;H5商品详情接口&#xff0c;APP商品详情接口&#xff0c;商品详情接口&#xff0c;商品销量接口&#xff0c;商品列表接口&#xff0c;商品属性接口&#xff0c;商品sku接口&#xff0c;商品评论接口&#xff0c;商品优惠价接口&#xff0c;商品历…

求职咨询Job Information

前言 加油 原文 求职咨询常用会话 ❶ I want to apply for a job which enables me to use my major. 我想要申请一个能用到我的专业知识的职业。 ❷ I have the capability of operating the computer. 我有操作电脑的能力。 ❸ My dream is to be an excellent interpret…

ts基础内容

javascript脚本语言简称ts为javascript进阶脚本语法 TypeScript是微软开发的一个开源的编程语言&#xff0c;通过在JavaScript的基础上添加静态类型定义构建而成。TypeScript通过TypeScript编译器或Babel转译为JavaScript代码&#xff0c;可运行在任何浏览器&#xff0c;任何操…

Python 字符串格式化高级用法

字符串格式化: 是在编程过程中&#xff0c;允许编码人员通过特殊的占位符&#xff0c;将相关对应的信息整合或提取的规则字符串。 python字符串格式化字符串的格式化常用的三种方式&#xff0c;分别是使用 %格式化&#xff0c;format方法格式化&#xff0c;fstring格式化。 传…

元数据管理概述

参考公众号文章&#xff1a;数据治理&#xff1a;元数据及元数据管理策略、方法和技术

走进小程序【一】什么是小程序?

文章目录&#x1f31f;前言&#x1f31f;发展史&#x1f31f;什么是[微信小程序](https://developers.weixin.qq.com/miniprogram/dev/framework/)&#xff1f;&#x1f31f;微信小程序能做什么&#xff1f;&#x1f31f;小程序发展前景和优势&#x1f31f;写在最后&#x1f31…

应用层 —— HTTPS协议

目录 1、HTTPS介绍 HTTP 与 HTTPS "加密" 是什么 常见的加密方式 对称加密 非对称加密 数据摘要 && 数据指纹 数字签名 2、HTTPS的工作过程探究 方案1 —— 只使用对称加密&#xff08;明文传输不可取&#xff09; 方案2 —— 只使用非对称加密&#xff08…

【探花交友】day02—完善个人信息

目录 1、完善用户信息 1.1、阿里云OSS 1.2、百度人脸识别 1.3、保存用户信息 1.4、上传用户头像 2、用户信息管理 2.1、查询用户资料 2.2、更新用户资料 3、统一token处理 3.1、代码存在的问题 3.2、解决方案 3.3、代码实现 4、统一异常处理 4.1、解决方案 4.2、…