Cmake基础(1)

什么是cmake

众所周知,对于C/C++,不同的IDE的project文件是不同的,VS中叫做vcproject。在linux中make工具叫做makefile,codeblock中叫做cpb。而cmake是一个通用的project组织方式,cmake的项目文件cmakelists.txt可以转成各种IDE所需要的project格式。
随着使用人数的不断增加,不少IDE可以直接支持cmake项目,虽然没有原生的舒服,比如VS和QtCreator等。

cmake写法

cmake的project叫做cmakelists.txt,不能用其他名称,必须完全一致。项目名称是在文件内部定义的,cmake把cmakelists.txt所在路径作为项目路径。他像makefile和qmake一样是一种脚本工具,是逐行执行的,需要手写,不支持可视化配置像VS一样。

cmake基本术语

  • 生成generate也叫做cmake bulid,功能是生成其他IDE的project文件
  • install
    用于将构建产物(包括可执行文件、库、头文件等)安装到指定的目录。在这个过程中,实际上并没有执行 CMakeLists.txt 文件,而是根据在该文件中配置的安装规则将构建产物复制到指定的位置。
    在 CMakeLists.txt 中,你会看到一些与安装相关的命令,比如 install(TARGETS …) 和 install(FILES …)。这些命令指定了在安装过程中应该安装哪些目标(如可执行文件、库)和文件。然后,执行 cmake --install 时,CMake 会根据这些规则将相应的文件复制到安装目录。
  • values
    在 CMake 中,你可以通过 option 命令来声明和设置可选变量。option 允许你定义一个具有两个状态(ON 或 OFF)的开关选项。这通常用于启用或禁用某些特定的功能。在 cmake 命令中使用 -D 选项设置变量。
  • cache file
    CMake 的 CMakeCache.txt 文件是一个非常重要的文件,它存储了 CMake 在配置过程中生成的缓存变量。这个文件包含了你通过 CMake 命令行或 CMake GUI 设置的各种选项和参数,以及 CMake 在配置过程中自动检测的系统信息。
    当你运行 cmake 命令时,CMake 会读取项目中的 CMakeLists.txt 文件,并生成一个 CMakeCache.txt 文件。这个文件保存了在配置时生成的所有缓存变量,包括你在命令行中指定的变量、CMakeLists.txt 文件中设置的变量以及 CMake 自动检测的系统信息。
    一旦 CMakeCache.txt 文件生成,下一次运行 cmake 时,CMake 将首先检查这个文件,而不是重新扫描整个项目。这使得在多次配置相同项目时更加高效。
    有时候,你可能希望将 CMake 缓存文件的内容导出到一个文件中,以便稍后使用。这时就可以使用 --cachefile 选项。

  • toolchain
  • debug mode
    将 CMake 设置为调试模式。在调试模式下,CMake 将输出更多的信息,以帮助诊断问题。
  • trace mode
    将 CMake 设置为追踪(trace)模式。在追踪模式下,CMake 将输出更详细的执行信息,包括每个命令的执行路径和结果。
  • Process script mode
    用于执行指定的 CMake 脚本文件,进入所谓的 “Process script mode”。这个选项允许你执行一些自定义的 CMake 逻辑,而不涉及实际的构建步骤。

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

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

相关文章

持续集成交付CICD:GitLabCI操作Harbor仓库

目录 一、实验 1.GitLabCI操作Harbor仓库 二、问题 1.gitlab-runner连接docker daemon报错 一、实验 1.GitLabCI操作Harbor仓库 (1)修改GitLabCI共享库代码并提交到mater CI.yaml .pipelineInit:tags:- buildstage: .prevariables:GIT_CHECKOUT: …

Qt图像处理-基于OpenCv的图像二值化处理

本文讲解Qt图像处理-基于OpenCv的图像二值化处理 一、概述 图像二值化原理 图像二值化就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果的过程。图像的二值化使图像中数据量大为减少,从而能凸显出目标的轮廓。 要得到二值化图像,首先要把…

Apache Avro编程快速入门

Maven配置 添加Avro依赖 <dependency><groupId>org.apache.avro</groupId><artifactId>avro</artifactId>

金蝶云星空协同开发环境应用内执行单据类型脚本

文章目录 金蝶云星空协同开发环境应用内执行单据类型脚本业务界面查询单据类型表数据导出数据执行数据库脚本单据类型xml检验是否执行成功检查数据库检查业务数据 金蝶云星空协同开发环境应用内执行单据类型脚本 业务界面 查询单据类型表数据 先使用类型中文在单据类型多语言…

std::iota 函数简单使用

std::iota 是 C 标准库中的一个算法&#xff0c;位于 <numeric> 头文件中。它的作用是用一个连续的范围内的递增序列填充容器。 函数签名如下&#xff1a; template< class ForwardIt, class T > void iota( ForwardIt first, ForwardIt last, T value ); 其中&…

C++使用回调函数的两种方式

一.函数指针 #include <iostream>typedef void (*callback)(int ,int); class MyTest { public:void setCallback(callback cb){m_callback = cb;}void add(int a, int b){m_callback(a, b);}private:callback m_callback; };void onCallback(int a, int b) {std::cout …

[C++]——学习模板

了解模板——初阶 前言&#xff1a;一、模板1.1 什么是模板1.2 模板的概念1.3 模板可以做什么1.4 泛型模板 二、函数模板2.1 函数模板概念和格式2.2 函数模板原理2.3 函数模板实例化2.3.1 隐式实例化2.3.2 显式实例化 2.4 模板参数的匹配原则2.5 函数模板声明定义分离 三、类模…

若依框架springboot——修改前端图片上传样式

简述 使用过若依框架的&#xff0c;一定知道若依前端框架上传图片的样式&#xff0c;是一个正方形加号图片&#xff0c;但是如果你要使用自定义样式呢。 比如将下面这个图进行修改呢 修改后的样式 你可以直接找到element-ui 修改上传图片的组件&#xff0c;也可以加入新的组…

二进制to十六进制

输入小于等于十六位的二进制数据&#xff0c;输出十六进制数据&#xff1b; #include <stdio.h> #include <stdlib.h> #include <math.h>int main(void) {char arr[16] { 0 }; int array[16] { 0 }; int hex[4] { 0 };int i 0; int num 0;scanf("…

AcWing 1250. 格子游戏(并查集)

题目链接 活动 - AcWing本课程系统讲解常用算法与数据结构的应用方式与技巧。https://www.acwing.com/problem/content/1252/ 题解 当两个点已经是在同一个连通块中&#xff0c;再连一条边&#xff0c;就围成一个封闭的圈。一般用x * n y的形式将&#xff08;x, y&#xff0…

CentOS 防火墙管理及使用的redis基本常用命令

文章目录 防火墙管理使用systemctl管理防火墙启动、关闭使用firewalld-cmd配置访问防火墙策略firewalld配置文件修改限制来源IP docker使用 redis 防火墙管理 需要关闭防火墙或者开启对应端口 使用systemctl管理防火墙启动、关闭 启动防火墙&#xff1a; systemctl start fi…

设计模式——桥接模式(结构型)

引言 桥接模式是一种结构型设计模式&#xff0c; 可将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构&#xff0c; 从而能在开发时分别使用。 问题 抽象&#xff1f; 实现&#xff1f; 听上去挺吓人&#xff1f; 让我们慢慢来&#xff0c; 先考虑一个简单的…

物联网智能仓库解决方案

物联网智能仓库解决方案是一种基于物联网技术的仓库管理系统&#xff0c;通过自动化设备、智能化管理系统和大数据分析等技术&#xff0c;实现仓库的智能化运营和管理。 物联网智能仓库解决方案包括&#xff1a; 仓库设备自动化&#xff1a;通过自动化设备和技术&#xff0c;实…

18--日志(了解)

1、日志 1.1 什么是日志 日志用来记录用户操作、系统运行状态等&#xff0c;是一个系统的重要组成部分。对于一些简单的小程序&#xff0c;可能并不需要在如何记录日志的问题上花费太多精力。但是对于作为基础平台为很多产品提供服务的后端程序&#xff0c;就必须要考虑如何依…

KVM虚拟机console使用

注意这些设置都在你要进入虚拟机里设置&#xff0c;不是在你的物理机设置 首先debian12 需要设置 grep ttyS0 /etc/securetty #没有则加上 echo ttyS0 >> /etc/securetty #启动 systemctl start serial-gettyttyS0 systemctl enable serial-gettyttyS0#CentOS Stream …

Springboot+vue的公寓报修管理系统(有报告)。Javaee项目,springboot vue前后端分离项目

演示视频&#xff1a; Springbootvue的公寓报修管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的公寓报修管理系统&#xff0c;采用M&#xff08;model&…

Winform高效获取控件(Control)方法 + 源码分析

背景&#xff1a;风好大&#xff0c;睡觉有点怕&#xff0c;起床敲代码了 之前学的都是都是通过遍历控件&#xff08;Controls&#xff09;&#xff0c;判断控件名是否相等来获取Control 其实直接通过:Controls["控件名"]&#xff0c;就可以获得需要的控件 为什么呢…

Unity中 URP Shader 常量缓冲区CBUFFER

文章目录 前言一、常量缓冲区CBUFFER 使用步骤1、在属性面版定义我们需要使用的属性2、在Pass中&#xff0c;使用前需要提前声明3、使用时&#xff0c;直接使用即可 二、使用 常量缓冲区CBUFFER 的好处三、ShaderGraph属性 和 对应Shader的功能1、我们创建一个颜色属性2、使用&…

Bash 操作审计和安全加固 —— 筑梦之路

bash 记录 配置环境变量&#xff1a;/etc/profile export HISTTIMEFORMAT"%F %T "export HISTORY_FILE/var/log/history/bash_history.logexport PROMPT_COMMAND{ thisHistIDhistory 1|awk "{print \\$1}";lastCommandhistory 1| awk "{\\$1\"…

nodejs+vue+微信小程序+python+PHP全国天气可视化分析系统-计算机毕业设计推荐

3.2.1前台用户功能 前台用户可分为未注册用户需求和以注册用户需求。 未注册用户的功能如下&#xff1a; 注册账号&#xff1a;用户填写个人信息&#xff0c;并验证手机号码。 浏览天气资讯&#xff1a;用户可以浏览天气资讯信息详情。 已注册用户的功能如下&#xff1a; 登录&…