CMake小实例

您所在的位置:网站首页 cmake实例 CMake小实例

CMake小实例

2023-09-15 07:57| 来源: 网络整理| 查看: 265

填补一下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进行版本控制也将在下一篇中出现

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3