简介
Cmake
非常好的一个工具,可跨平台使用,是进行项目构建的一把好手,对于一个工具而言,还是要以使用目的为导向的,掌握最实用,应用范围最广的功能即可。
安装
作为跨平台应用,谈到安装的话,就需要考虑Linux
与windows
了,对于Linux
而言,这已经不是什么问题了,现在很多开发版本都是自带CMake
了,但可能版本不是最新的,只需要根据你的要求选择下是否需要进行升级即可。
很多库在windows
的安装与配置环节是相当困难的,但是Cmake
还是比较人性化的,可能前期已经考虑到这个问题了,所在,你只需要在github
找到它,下载Release
下对应的版本即可,安装即用,没有配置烦恼。
目标功能
本人学习Cmake主要实现的目标为:
- 能够编译一个独立的*.cpp;
- 能够实现不同路径下的*cpp编译在一起;
- 能调用自己生成的*.so与*.h
目标1
编译某一个*.cpp
, 文件结构如下:
T1/
| -- CMakeLists.txt
| -- build /
| -- main.cpp
CMakeLists.txt的文件为:
PROJECT (TEST)
cmake_minimum_required(VERSION 3.12) #camke版本号
AUX_SOURCE_DIRECTORY(. SRC_LIST) #将./下的所有*.cpp加入到SRC_LIST中
ADD_EXECUTABLE(hello ${SRC_LIST})
目标2
编译多个*.cpp
,文件结构如下:
T2
| -- CMakeList.txt
| -- main.cpp
| -- build
| -- src
-- CMakeList.txt
-- test.h
-- test.cpp
CMakeLists.txt文件为:
PROJECT(main)
CMAKE_MINIMUM_REQUIRED(VERSION 3.12)
ADD_SUBDIRECTORY(src)
AUX_SOURCE_DIRECTORY(. DIR_SRCS)
ADD_EXECUTABLE(main ${DIR_SRCS})
TARGET_LINK_LIBRARIES(main TEST)
第二个CMakeLists.txt文件为:
AUX_SOURCE_DIRECTORY(. DIR_TEST_SRC)
#generate *.so
ADD_LIBRARY(TEST SHARED ${DIR_TEST_SRC})
目标3
调用*.so
, *.h
,文件结构:
T3
| -- include
-- test.h
| -- libs
-- libTEST.so
| -- CMakeLists.txt
| -- main.cpp
CMakeLists.txt的文件为:
PROJECT(main)
CMAKE_MINIMUM_REQUIRED(VERSION 3.12)
INCLUDE_DIRECTORIES(./include)
AUX_SOURCE_DIRECTORY(. DIR_SRCS)
ADD_EXECUTABLE(main ${DIR_SRCS})
#绝对路径添加 *.so
TARGET_LINK_LIBRARIES(main /home/utech/myso/t3/libs/libTEST.so)
上述代码都是最简单最基本的语句,如果想要执行某些文件的输出位置等操作,还需要继续深入学习下。
操作流程
因为windows
下是有gui
的,可以通过界面操作,相对来说比较简答,所以在这里介绍下Linux
下的使用:
首先,在根目录下建立并进入build
的文件夹:
mkdir build
cd build
然后执行Cmake
命令,记得后面要加路径,即CMakeLists.txt
所在的地方,例如 ../
就说明是在上层目录中:
cmake ../
最后在根目录下执行make
命令即可:
make -j8
执行完上述几条代码,就会生成可执行文件了。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。