Cmake的使用

第一步:安装Cmake

双击点开即可,无脑下一步。

第二步:编写一个简单的Cmake项目

CMakeLists.txt文件

# 设置最低的 CMake 版本要求
cmake_minimum_required(VERSION 3.10)# 设置项目名称
project(MyProject)# 添加可执行文件
add_executable(my_executable main.cpp)

CMakeLists.txt是CMake构建系统的配置文件,用于定义项目的构建规则和依赖关系。它通常位于项目的根目录中,包含了一系列的指令和设置,用于指导CMake如何构建项目。

以下是CMakeLists.txt文件中一些关键部分的详细讲解:

  1. cmake_minimum_required: 指定项目所需的最低CMake版本。这确保了只有满足最低版本的CMake才能正确构建项目。
  2. project: 定义项目的名称和版本。这个命令会设置一些变量,如PROJECT_NAMEPROJECT_VERSION,这些变量可以在后续的CMakeLists.txt中使用。
  3. add_executable/add_library: 分别用于添加可执行文件和库文件的目标。需要指定目标名称和源文件列表。例如,add_executable(myapp main.cpp)会创建一个名为myapp的可执行文件,其源文件为main.cpp
  4. target_link_libraries: 用于指定目标(可执行文件或库)所依赖的其他库。例如,target_link_libraries(myapp mylib)表示myapp依赖于mylib库。
  5. include_directories: 用于添加头文件搜索路径。这样,在编译时,编译器就知道在哪里查找头文件。
  6. link_directories: 用于添加库文件搜索路径。这样,在链接时,链接器就知道在哪里查找库文件。
  7. find_package: 用于查找并加载系统中已安装的包。这对于使用第三方库非常有用。
  8. set: 用于设置变量。可以用来定义各种路径、标志和其他配置选项。
  9. message: 用于在构建过程中输出信息,有助于调试和了解构建过程。
  10. install: 用于指定安装目标时应该包含哪些文件和目录,以及它们应该被安装到什么位置。
  11. enable_testing 和 add_test: 用于添加测试用例,并在构建过程中运行这些测试。
  12. catkin_package (针对ROS项目): 用于声明ROS消息文件并将其转换为特定编程语言所需的功能包,以及catkin工程项目文件的编译链接配置。

总的来说,CMakeLists.txt是CMake构建系统的核心,通过编写CMakeLists.txt文件,开发者可以方便地管理项目的构建过程,实现跨平台的构建。在使用CMake时,通常需要先运行cmake命令来生成对应平台的构建文件(如Makefile),然后使用make命令来编译源码生成可执行程序或共享库。

main.cpp

#include <iostream>
#include <stdio.h>
int main() {std::cout << "Hello, CMake!" << std::endl;printf("sb");return 0;
}

然后打开cmd窗口,直接cmake .即可

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

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

相关文章

SUSE12系统破解root密码

SUSE12系统破解root密码 1、重启系统&#xff0c;重启时出现引导界面&#xff0c;按e 2、在启动 linux 的启动选项里加上 init/bin/bash&#xff0c;然后按 F10 启动&#xff0c;通过给内核传递 init/bin/bash 参数使得 OS 在运行 login 程序之前运行 bash&#xff0c;出现命令…

【力扣白嫖日记】626.换座位

前言 练习sql语句&#xff0c;所有题目来自于力扣&#xff08;https://leetcode.cn/problemset/database/&#xff09;的免费数据库练习题。 今日题目&#xff1a; 626.换座位 表&#xff1a;Seat 列名类型idintstudentvarchar id 是该表的主键&#xff08;唯一值&#xf…

Uni-ControlNet: All-in-One Control toText-to-Image Diffusion Models——【论文笔记】

本文发表于NeurIPS 2023 项目官网&#xff1a;Uni-ControlNet: All-in-One Control to Text-to-Image Diffusion Models 一、Introduction 近两年来&#xff0c;扩散模型在图像合成任务中表现优异&#xff0c;尤其是文本到图像&#xff08;T2I&#xff09;扩散模型已成为合成高…

TDengine 在 DISTRIBUTECH 分享输配电数据管理实践

2 月 27-29 日&#xff0c;2024 美国国际输配电电网及公共事业展&#xff08;DISTRIBUTECH International 2024&#xff09;在美国-佛罗里达州-奥兰多国家会展中心举办。作为全球领先的年度输配电行业盛会&#xff0c;也是美洲地区首屈一指的专业展览会&#xff0c;该展会的举办…

08 OpenCV 腐蚀和膨胀

文章目录 作用算子代码 作用 膨胀与腐蚀是数学形态学在图像处理中最基础的操作。其卷积操作非常简单&#xff0c;对于图像的每个像素&#xff0c;取其一定的邻域&#xff0c;计算最大值/最小值作为新图像对应像素位置的像素值。其中,取最大值就是膨胀&#xff0c;取最小值就是腐…

#QT(程序打包)

1.IDE&#xff1a;QTCreator 2.实验&#xff1a;打包到windows&#xff08;exe文件&#xff09; 3.记录&#xff1a; &#xff08;1&#xff09;切换工厂到"release"&#xff0c;release模式基本没有调试信息&#xff0c;比较精简&#xff0c;debug模式有很多调试信…

Databend 开源周报第 134 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 支持多语句事务…

Redis 之六:Redis 的哨兵模式(Sentinel)

Redis 哨兵&#xff08;Sentinel&#xff09;模式是一种高可用性解决方案&#xff0c;用于监控和自动故障转移的集群系统。 在 Redis Sentinel 架构中&#xff0c;哨兵是一组运行在特殊模式下的 Redis 进程&#xff0c;它们可以监控一个或多个主从复制结构中的 Redis 主服务器以…

二叉搜索树题目:将有序数组转换为二叉搜索树

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法证明代码复杂度分析 题目 标题和出处 标题&#xff1a;将有序数组转换为二叉搜索树 出处&#xff1a;108. 将有序数组转换为二叉搜索树 难度 4 级 题目描述 要求 给定整数数组 nums \texttt{nums}…

手写分布式配置中心(二)实现分布式配置中心的简单版本

这一篇文章比较简单&#xff0c;就是一个增删改查的服务端和一个获取配置的客户端&#xff0c;旨在搭建一个简单的配置中心架构&#xff0c;代码在 https://gitee.com/summer-cat001/config-center 服务端 服务端选择用springboot 2.7.14搭建&#xff0c;设计了4个接口/confi…

SLAM ORB-SLAM2(21)基础矩阵的计算和评分

SLAM ORB-SLAM2&#xff08;21&#xff09;基础矩阵的计算和评分 1. 前言2. 基础矩阵2.1. 对级约束2.2. 推导2.3. 计算原理 3. ComputeF214. CheckFundamental 1. 前言 在 《SLAM ORB-SLAM2&#xff08;20&#xff09;查找基础矩阵》 中了解到 查找基础矩阵主要过程&#xff1…

MySQL NDB Cluster 分布式架构搭建 自定义启动、重启和关闭集群Shell脚本

此次NDB Cluster使用三台虚拟机进行搭建&#xff0c;一台作为管理节点&#xff1b;而对于另外两台服务器&#xff0c;每一台都充当着数据节点和SQL节点的角色。注意不是MGR主从复制架构&#xff0c;而是分布式MySQL架构。 创建 /var/lib/mysql-cluster/config.ini Cluster全局…