CMake小实例

填补一下CMake的空白,适合新手哟

CMake(好东西!!!)
当然,这篇文章只适用于新手入门,不适合进阶!!!

CMake

关于CMake的详细简介请去官网,那里有完整的文档

CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CMakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处 (百度的)

下载CMake

Ubuntu:

sudo apt install cmake 

安装完成后记得检测一下

cmake --version

出现下面的界面则是安装成功
在这里插入图片描述

Windows 下直接官网下载后安装,本文章将以Ubuntu来作为测试系统
具体文件已经上传到GitHub:https://github.com/Tan-fenyuan/final-cmake.git
如有需要,请各位看官自取,记得star

CMake操作

cmake
make
make install (安装)

CMake需要记住的一些入门知识

CMake 是需要从一个名为CMakeLists.txt 的文件里读取指定命令进行构建的,所以
想用好CMake,就必须得了解CMakeLists.txt的编写
下面是CMakeLists.txt中比较常见的命令

/*
	CMakeLists.txt中参数严格区分大小写,命令不区分大小写
*/

CMAKE_SOURCE_DIR 最外层CMakeLists.txt所在的目录

PROJECT(项目名称) //也可以  project() 
/*
	poject(name,C CXX)   可以指定项目的语言格式 C为c文件, CXX为c++
	也同时定义了两个CMake的变量:
	项目名称_BINARY_DIR
	项目名称_SOURCE_DIR
	他们都指向当前的工作目录

*/

SET()
/*
 顾名思义,就是设置,可以搭配下面的CMAKE_ARCHIVE_OUTPUT_DIRECTORY来设置所代表的位置
 set也可以起到赋值变量的作用
 SET(SRC main.cpp)  SRC就包含了main.cpp
 也可以包含多个文件,SET(SRC main.cpp t1.cpp t2.cpp)
*/

MESSAGE()
/*
message()向终端输出用户定义好的消息
*/

ADD_EXECUTABLE(可执行文件名 源文件)
/*
	通过这个命令来生成可执行文件
	通常生成的文件名
	liunx下为: 可执行文件名
	windows下为: 可执行文件名.exe
*/

ADD_SUBDIRECTORY()
/*
	add_subdirectory(src) 编译src路径下的CMakeLists.txt文件内容
*/


CMAKE_ARCHIVE_OUTPUT_DIRECTORY:默认存放静态库的目录位置;
CMAKE_LIBRARY_OUTPUT_DIRECTORY:默认存放动态库的目录位置;
LIBRARY_OUTPUT_PATH:默认存放库文件的位置,如果产生的是静态库并且没有指定 CMAKE_ARCHIVE_OUTPUT_DIRECTORY 则存放在该目录下,动态库也类似;
CMAKE_RUNTIME_OUTPUT_DIRECTORY:存放可执行软件的目录;

构建

## 内部构建
直接在项目目录下进行cmake和make操作,这会导致出现很多临时文件,对于新手不友好,对于老手更不友好,所以不建议使用
## 外部构建
外部构建旨在隐藏不必要的临时文件,便于进行其他操作,外部操作方法如下:
在项目根目录里新建一个build目录用于cmake,
#假设项目目录为test
mkdir test #建立项目根目录
cd test	#切换到项目里
touch CMakeLists.txt #建立CMakeLists.txt 该文件名字必须为CMakeLists.txt
vim CMakeLists.txt #编辑
mkdir build #新建一个用于cmake 的目录
cd build 
cmake .. #要让cmake找到你的最外层CMakeLists.txt所在的目录
make #在build目录下进行make

让前面的test像一个项目

开始实践,让我们的test像一个项目
在这里插入图片描述建立如上图层次的目录
注意不一定每个目录里都要有CMakeLists.txt文件,只要CMakeLists.txt里的各个路径引用正确即可
现在我们进入到根目录下的CMakeLists.txt里:

vim CMakeLists.txt

在这里插入图片描述
只有三句话:
CMAKE_MINIMUM_REQUIRED(VERSION 3.0)
这是规定cmake使用的最低版本,如果用户达不到这个版本,会提示用户进行升级

PROJECT(FINAL_TEST) 项目名为FINAL_TEST

ADD_SUBDIRECTORY(src bin) :将src路径下的CMakeLists.txt进行处理,并且将处理的结果放在bin下,如果是在build目录下cmake的,那么结果就会在build/bin/下

现在来到src下:

cd src
vim CMakeLists.txt

在这里插入图片描述
大部分都已经在前面讲过了,现在开始说没有说明的部分

INCLUDE_DIRECTORIES() 
/*
	要包含的头文件路径:由于CMAKE_SOURCE_DIR代表着最外层目录,所以头文件目录就为${CMAKE_SOURCE_DIR}/include
*/
ADD_LIBRARY()
/*
生成库文件

ADD_LIBRARY(静态库文件名 STATIC 源文件)  生成一个静态库文件
ADD_LIBRARY(动态库文件名 SHARED 源文件)生成一个动态库文件

静态库以.a为后缀,Windows下为.lib为后缀
动态库以.so为后缀,Windows下为.dll为后缀
		一般的动态库都有版本关联
		SET_TARGET_PROPERTIES(动态库文件名 PROPERTIES VERSION 1.1 SOVERSION 1.2)
		VESRION 指动态库版本,SOVERSION 指API版本
 */

补充

还有一篇文章在准备中,CMake的安装和运行,以及使用git+上CMake进行版本控制也将在下一篇中出现

每个人都应该为自己的事业,为自己的理想去活一次,追逐自己的事业和理想并不容易,需要有很大的付出,也只有你内心的那个理想,才值得这么大的付出 ----<<左耳听风>>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦想执行官

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值