目录
目录
set 设置变量-------------------------添加版本号
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(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
指定的规则:
NEWLINE_STYLE
选项时不能使用(无效)。将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()的最近一个CMakeLists.txt文件所在的文件夹。
例如:内层的CMakeLists.txt 中不包project()
此时将出错 告诉我文件不存在
我将其放置于外层,则没有错误
添加一个flag用于预处理
添加方式有两种:
例如:add_definitions(-DMyDebug)
使用:
注意:使用时不要前面的 -D
文章浏览阅读1.3w次,点赞3次,收藏25次。本教程是ofbiz基本应用,它涵盖了OFBiz应用程序开发过程的基本原理。目标是使开发人员熟悉最佳实践,编码惯例,基本控制流程以及开发人员对OFBiz定制所需的所有其他方面。 本教程将帮助您在OFBiz中构建您的第一个“演示应用程序”。· 概述(OFBiz简介)· 设置和运行OFBiz· 下载Apache OFBiz_ofbiz 教程
文章浏览阅读21次。1. 背景介绍1.1 什么是强化学习强化学习(Reinforcement Learning,简称RL)是一种机器学习方法,它通过让智能体(Agent)在环境(Environment)中采取行动,根据环境给出的奖励(Reward)或惩罚(Punishment)来学习最优策略。强化学习的目标是让智能体_强化学习(rl)
文章浏览阅读4.4k次,点赞3次,收藏2次。idea项目debug慢,打包慢_idea debug启动很慢
文章浏览阅读4.1k次,点赞3次,收藏5次。MongoDB是一款开源的分布式架构的NoSQL数据库管理系统。对于需要复杂 SQL 查询的问题。MongoDB是不太适合的,在技术选项上需要根据业务场景和公司实际情况选择合适的数据库,关系型数据库和NoSQL数据库各有优缺点,应该根据实际场景合理选择数据库..._mongodb的优缺点及应用场景
文章浏览阅读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次。天空的蟾月已经西斜,渐渐星稀,东方的天际已经泛红,霞蔚铺开,舒展的云朵悄然飘来。嗡嗡嗡......是破山寺的钟声隐隐传来,一波一波的梵音经颂,几多心灵撼动,净里的天籁之音。犹记得尚湖的丝藕、那么的清脆,山麓上一树树挂着的一颗颗如红玛瑙枣仁的甜,毛栗子那么多刺,你会剥开的吃吗。家里的小院两棵橘树该挂满了如照着的红红的灯笼!耳畔阵阵唳唳的啭音传来,报着秋爽、韵着秋声,抬头望,长空里一字的雁行、点、点、..._徐辉的痛苦回忆
文章浏览阅读630次。这里用到的Linux系统是centos7系统,centos7是自带py的但是py的2.7.5版本 连接服务器的使用的是SSH Secure shell1.首先安装依赖包1)安装gcc编译器 gcc编译器有些系统版本已经默认安装了,可以通过 gcc --version进行查看 安装gc..._python3.7 安装 linux
文章浏览阅读9.5k次。当点击按钮时modal的位置看起来很不舒服, 解决办法总结有两: 1.使用modal 弹出事件方法; 从官方文档中可以了解到, modal组件有不少事件接口: 其中 “shown.bs.modal”可以在弹窗框出现后 做一些处理, 更改弹出框的样式当然是可以的: script type="text/javascript"> $(_bootstrap3 弹出框 垂直居中
文章浏览阅读1.1k次。P4 实现了一种 Programmable Match-Action Pipeline(流水线可编程)架构,作为 Pipeline,就是:开发者可以自定义 Match Fields、自定义 Action Type、从而实现自定义的 Match-Action Table,再由多张这样的 Tables 进而形成一条 Pipeline。_p4 dsl
文章浏览阅读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游戏
文章浏览阅读6.3k次,点赞3次,收藏9次。;************************************************************实验代码datarea segment mess1 db 'Please enter character string : ',13,10,'$'_汇编分类统计字符个数