cmake 学习使用笔记(一)_cmake_cxx_standard-程序员宅基地

技术标签: C++  c++  CMake  

目录

目录

使用工具:

项目设置:

构建程序

问题:待解?----已解

set 设置变量-------------------------添加版本号

设置系统自带的变量

设置自定义变量

添加版本号

扩展:

PROJECT_SOURCE_DIR: 

 add_definitions-------------------------添加宏定义



使用工具:

vs 2019, Clion

系统: Windows

参考网址:cmake使用教程(一)-起步 - 掘金

爱编程的大丙 

创建一个新项目 

        在main.cpp 同目录下 添加一个新文件 CMakeLists.txt, 一个简单的项目一般包含如下内容:

cmake_minimum_required(VERSION 3.0)
project(TESTCMAKE)
add_executable(test main.cpp)
  • cmake_minimum_required:指定使用的 cmake 的最低版本 (非必需,一般都加上,不加会有警告。)
  • project定义工程名称(必要),并可指定工程的版本、工程描述、web主页地址、支持的语言(默认情况支持所有语言),如果不需要这些都是可以忽略的,只需要指定出工程名字即可。
  • add_executable定义工程会生成一个可执行程序。源文件名可以是一个也可以是多个,如有多个可用空格或分号(;)间隔。

项目设置:

project(<PROJECT-NAME> [VERSION <major>[.<minor>[.<patch>[.<tweak>]]]] [LANGUAGES <language-name>...])

可只设置项目名称:如:

project ("cPulsPlusTestProject")

 也可设置一下项目描述,项目地址等

project (cPulsPlusTestPrj 
		VERSION 1.0.0 
		DESCRIPTION "项目描述:xxxxx"
		HOMEPAGE_URL "项目地址,比如:github 地址"
		LANGUAGES CXX)

 注意: 上面代码片段大写的必须大写,否则编译通不过,比如(LANGUAGES  CXX, DESCRIPTION 等)

构建程序

使用cmake 来构建程序:

cmake CMakeLists.txt文件所在路径

 使用 cmake .  命令

构建前:

 构建后:

 不过我使用 clion 构建的程序一直默认为 vs 2019

构建后:

 如果要重新cmake  ,需删除 缓存

 make  

windows下提示make不是内部命令​
如果你用MinGW,你的make 叫 mingw32-make

如果你用MSVC,你的make叫 nmake

问题:待解?----已解

cmake .  老是默认为 vs2019

疑似:未理解 cmake 后面的点(.) 是什么意思

经测试应该是路径,确切的应该是 CMakeList.txt 所在位置,所以 我应该是../  返回上一级

 一直使用上一级路径, 所以 cmake 出来 总是默认为 vs 2019 

 当我进入mingw 下 ,构建的就不是 vs 2019 环境了:如:

set 设置变量-------------------------添加版本号

set(KEY VALUE)接受两个参数,用来声明变量。在camke语法中使用KEY并不能直接取到VALUE,必须使用${KEY}这种写法来取到VALUE

设置系统自带的变量

如:C++ 标准

set(cmake_cxx_standard 11)

设置自定义变量

设置自定义的变量,例如:设置头文件搜索路径

CMAKE_CURRENT_SOURCE_DIR
这是当前处理的CMakeLists.txt所在的目录

添加版本号

首先设置两个变量

set (cPlusPlusTest_version_major 1)
set (cPlusPlusTest_version_minor 0)

configure_file(
    "${PROJECT_SOURCE_DIR}/cPlusPlusTestConfig.h.in"
    "${PROJECT_BINARY_DIR}/cPlusPlusTestConfig.h"
)

在cPlusPlusTestConfig.h.in 中加入

#define cPlusPlusTest_version_major @cPlusPlusTest_version_major@
#define cPlusPlusTest_version_minor @cPlusPlusTest_version_minor@

 使用

扩展:

configure_file(input output options)

  将一个文件(由input参数指定)拷贝到指定位置(由output参数指定),并根据options修改其内容。

configure_file命令一般用于自定义编译选项或者自定义宏的场景。configure_file命令会根据options指定的规则:

  • COPYONLY:只拷贝文件,不进行任何的变量替换。这个选项在指定了NEWLINE_STYLE选项时不能使用(无效)。
  • ESCAPE_QUOTES:躲过任何的反斜杠(C风格)转义。

  将input文件复制到output文件,并在输入文件内容中的变量,替换引用为@VAR@或${VAR}的变量值。每个变量引用将替换为该变量的当前值,如果未定义该变量,则为空字符串

 例如:cPlusPlusTestConfig.h.in

1. 定义 CMakeList.txt

set (cPlusPlusTest_version_major 1.9)
set (cPlusPlusTest_version_minor 0)
configure_file(
	"${PROJECT_SOURCE_DIR}/cPlusPlusTestConfig.h.in"
	"${PROJECT_BINARY_DIR}/cPlusPlusTestConfig.h"
)

2. cPlusPlusTestConfig.h.in(输入文件)

#define cPlusPlusTest_version_major @cPlusPlusTest_version_major@
#define cPlusPlusTest_version_minor @cPlusPlusTest_version_minor@

3. cPlusPlusTestConfig.h(输出文件)

自动生成,无需我们手动操作输入          

PROJECT_BINARY_DIR:官方解释是 用于生成项目目录的完整路径

例如:

PROJECT_SOURCE_DIR: 

PROJECT_SOURCE_DIR为包含PROJECT()的最近一个CMakeLists.txt文件所在的文件夹。

例如:内层的CMakeLists.txt 中不包project()

此时将出错  告诉我文件不存在 

 我将其放置于外层,则没有错误

 add_definitions-------------------------添加宏定义

添加一个flag用于预处理

添加方式有两种:

  • -D开头
  • /D开头

例如:add_definitions(-DMyDebug)

 使用:

 注意:使用时不要前面的 -D

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_41722795/article/details/125596781

智能推荐

ofbiz初级教程_ofbiz 教程-程序员宅基地

文章浏览阅读1.3w次,点赞3次,收藏25次。本教程是ofbiz基本应用,它涵盖了OFBiz应用程序开发过程的基本原理。目标是使开发人员熟悉最佳实践,编码惯例,基本控制流程以及开发人员对OFBiz定制所需的所有其他方面。 本教程将帮助您在OFBiz中构建您的第一个“演示应用程序”。· 概述(OFBiz简介)· 设置和运行OFBiz· 下载Apache OFBiz_ofbiz 教程

强化学习RL简介:从基本概念到核心算法_强化学习(rl)-程序员宅基地

文章浏览阅读21次。1. 背景介绍1.1 什么是强化学习强化学习(Reinforcement Learning,简称RL)是一种机器学习方法,它通过让智能体(Agent)在环境(Environment)中采取行动,根据环境给出的奖励(Reward)或惩罚(Punishment)来学习最优策略。强化学习的目标是让智能体_强化学习(rl)

idea项目debug启动慢,打包慢_idea debug启动很慢-程序员宅基地

文章浏览阅读4.4k次,点赞3次,收藏2次。idea项目debug慢,打包慢_idea debug启动很慢

MongoDB系列之适用场景和不适用场景_mongodb的优缺点及应用场景-程序员宅基地

文章浏览阅读4.1k次,点赞3次,收藏5次。MongoDB是一款开源的分布式架构的NoSQL数据库管理系统。对于需要复杂 SQL 查询的问题。MongoDB是不太适合的,在技术选项上需要根据业务场景和公司实际情况选择合适的数据库,关系型数据库和NoSQL数据库各有优缺点,应该根据实际场景合理选择数据库..._mongodb的优缺点及应用场景

vs解决方案和项目工程_vs的解决方案和项目什么关系-程序员宅基地

文章浏览阅读5.6k次,点赞21次,收藏81次。文章目录解决方案和项目文件夹的包含关系解决方案下的文件都有什么?解决方案(fangan.sln)文件参考链接解决方案和项目文件夹的包含关系  假设新建一个项目ssyy1,解决方案起名fangan,注意解决方案包括项目,此时生成的最外层目录为fangan代表整个解决方案的内容都在这个文件夹内。在这个fangan文件夹内包含有fangan.sln的解决方案配置文件和一个ssyy1文件夹,ssyy1..._vs的解决方案和项目什么关系

网站被劫持方式汇总_劫持网站有技术员联系方式吗-程序员宅基地

文章浏览阅读3k次,点赞3次,收藏4次。网站劫持检测1、检测网站是否被劫持2、域名是否被墙3、DNS污染检测4、网站打开速度检测5、网站是否被黑、被入侵、被改标题、被挂黑链【深度检测】1、可以检测多层js劫持、图片劫持、FLASH劫持、地区电信劫持、DNS劫持、域名被墙、DNS污染2、可以获取严重占用加载时间的JS或者图片、css等html所用文件3、不支持搜索引擎快照劫持检测最长等待时间为10分钟。 此项选..._劫持网站有技术员联系方式吗

随便推点

徐辉 北大计算机,徐辉的痛苦回忆_徐辉经历的那一段痛苦回忆-程序员宅基地

文章浏览阅读1.4k次。天空的蟾月已经西斜,渐渐星稀,东方的天际已经泛红,霞蔚铺开,舒展的云朵悄然飘来。嗡嗡嗡......是破山寺的钟声隐隐传来,一波一波的梵音经颂,几多心灵撼动,净里的天籁之音。犹记得尚湖的丝藕、那么的清脆,山麓上一树树挂着的一颗颗如红玛瑙枣仁的甜,毛栗子那么多刺,你会剥开的吃吗。家里的小院两棵橘树该挂满了如照着的红红的灯笼!耳畔阵阵唳唳的啭音传来,报着秋爽、韵着秋声,抬头望,长空里一字的雁行、点、点、..._徐辉的痛苦回忆

linux安装python3.7_python3.7 安装 linux-程序员宅基地

文章浏览阅读630次。这里用到的Linux系统是centos7系统,centos7是自带py的但是py的2.7.5版本 连接服务器的使用的是SSH Secure shell1.首先安装依赖包1)安装gcc编译器  gcc编译器有些系统版本已经默认安装了,可以通过 gcc --version进行查看     安装gc..._python3.7 安装 linux

BootStrap3.X模态框垂直居中显示_bootstrap3 弹出框 垂直居中-程序员宅基地

文章浏览阅读9.5k次。当点击按钮时modal的位置看起来很不舒服, 解决办法总结有两: 1.使用modal 弹出事件方法;   从官方文档中可以了解到, modal组件有不少事件接口: 其中 “shown.bs.modal”可以在弹窗框出现后 做一些处理, 更改弹出框的样式当然是可以的: script type="text/javascript"> $(_bootstrap3 弹出框 垂直居中

P4 开发实践 — 软件 DSL 架构_p4 dsl-程序员宅基地

文章浏览阅读1.1k次。P4 实现了一种 Programmable Match-Action Pipeline(流水线可编程)架构,作为 Pipeline,就是:开发者可以自定义 Match Fields、自定义 Action Type、从而实现自定义的 Match-Action Table,再由多张这样的 Tables 进而形成一条 Pipeline。_p4 dsl

【Unity实战篇 】| 2.5D游戏是如何做出来的呢,2.5D游戏快速制作教程_unity 开发2.5d游戏-程序员宅基地

文章浏览阅读4.5w次,点赞80次,收藏158次。玩过游戏的朋友都知道,市面上最常见的游戏多数分为2D和3D两种。2D和3D游戏之间的差异大家都知道,一个是类似纸片游戏属于二维层面,另一个则是在3D立体空间中游玩。其中还夹杂着一个2.5D游戏,本篇文章就来讲一下怎么通过Unity进行2.5D游戏是怎样的以及如何制作2.5D游戏。制作方法很简单,文中使用到了Tile Map Editor制作2D地图,通过控制相机角度来形成伪3D来制作2.5D效果的游戏。下面就一起来看看到底是怎样制作的吧!_unity 开发2.5d游戏

汇编实验——分类统计字符个数count_char_汇编分类统计字符个数-程序员宅基地

文章浏览阅读6.3k次,点赞3次,收藏9次。;************************************************************实验代码datarea segment mess1 db 'Please enter character string : ',13,10,'$'_汇编分类统计字符个数

推荐文章

热门文章

相关标签