记录下cmake学习过程,以后还会补充
- 单目录单文件
demo1 目录下只有一个a1.cpp, 如下图
[root@localhost demo1]# tree
.
├── a1.cpp
└── CMakeLists.txt
编写CMakeLists.txt
1 CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12)2 3 PROJECT(demo1)4 5 ADD_EXECUTABLE(demo1out a1.cpp)
命令行执行 cmake CMakeLists.txt, 会形成
CMakeCache.txt CMakeFiles cmake_install.cmake Makefile
命令行执行make,就会编译出可执行文件demo1out
- 单目录多文件
目录结构如图:
[root@localhost demo2]# tree
.
├── a1.cpp
├── CMakeLists.txt
├── p1.cpp
└── p1.h
编写CMakeLists.txt,
1 CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12)2 3 PROJECT(demo2)4 #发现一个目录下所有的源代码文件并将列表存储在一个变量中,把当前目录下的所有源码文件名赋给变量SOURCE_DIR_15 AUX_SOURCE_DIRECTORY(./ SOURCE_DIR_1) 6 7 ADD_EXECUTABLE(demo2out ${SOURCE_DIR_1})
- 多目录多文件
a1.cpp 要使用 testlib目录下的文件编译成的静态库
[root@localhost demo3]# tree
.
├── a1.cpp
└── testlib├── p1.cpp└── p1.h
先编写子目录testlib里面的CMakeLists.txt
root@localhost demo3]# tree
.
├── a1.cpp
├── CMakeLists.txt
└── testlib├── CMakeLists.txt├── p1.cpp└── p1.h
1)demo3/testlib/CMakeLists.txt
1 CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12)2 3 AUX_SOURCE_DIRECTORY(./ SOURCE_DIR_1)4 5 ADD_LIBRARY(plib ${SOURCE_DIR_1})#默认生成静态库吧
2)demo3/CMakeLists.txt
1 CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12)2 3 PROJECT(demo3)4 5 ADD_SUBDIRECTORY(./testlib) #添加子目录路径6 INCLUDE_DIRECTORIES(./testlib) #添加头文件路径7 AUX_SOURCE_DIRECTORY(./ SOURCE_DIR)8 9 ADD_EXECUTABLE(demo3out ${SOURCE_DIR})10 11 TARGET_LINK_LIBRARIES(demo3out plib) #链接库