cmake使用

1. cmake使用

1.1. 进行外部编译,不会把源代码搞乱

养成喜欢进行外部编译(out-of-source build) 而不是in-source build
out-of-source build一般在源文件的顶层目录中 新建build目录

对于命令行可以 cd build

然后 cmake .. -G”MinGW Makefiles”即可

这样所有的临时文件 都会放在build目录下不会和source有任何的瓜噶。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
➜  /Users/jack/Documents/learn_cmake >
➜ /Users/jack/Documents/learn_cmake >
➜ /Users/jack/Documents/learn_cmake >
➜ /Users/jack/Documents/learn_cmake >ll
total 16
-rw-r--r-- 1 jack staff 539B 10 9 23:34 CMakeLists.txt
-rw-r--r-- 1 jack staff 1.9K 10 9 20:50 Complex.cpp
drwxr-xr-x 13 jack staff 416B 10 9 23:58 build_he
➜ /Users/jack/Documents/learn_cmake >cd build_he
➜ /Users/jack/Documents/learn_cmake/build_he >ll
total 184
-rw-r--r-- 1 jack staff 20K 10 9 23:56 CMakeCache.txt
drwxr-xr-x 44 jack staff 1.4K 10 9 23:58 CMakeFiles
-rw-r--r-- 1 jack staff 3.6K 10 9 23:56 CPackConfig.cmake
-rw-r--r-- 1 jack staff 4.0K 10 9 23:56 CPackSourceConfig.cmake
-rw-r--r-- 1 jack staff 304B 10 9 23:56 CTestTestfile.cmake
-rw-r--r-- 1 jack staff 2.8K 10 9 23:56 DartConfiguration.tcl
-rw-r--r-- 1 jack staff 19K 10 9 23:56 Makefile
drwxr-xr-x 3 jack staff 96B 10 9 23:56 Testing
-rw-r--r-- 1 jack staff 1.4K 10 9 23:56 cmake_install.cmake
-rw-r--r-- 1 jack staff 351B 10 9 23:56 compile_commands.json
-rwxr-xr-x 1 jack staff 20K 10 9 23:58 test001
➜ /Users/jack/Documents/learn_cmake/build_he >

1.2. 加头文件,库文件

1
2
3
4
5

//#set include and lib directory..
include_directories("/Users/jack/Projects/googletest/googletest/include")
link_directories("/Users/jack/Projects/googletest/googletest/mybuild")
link_libraries("/Users/jack/Projects/googletest/googletest/mybuild/libgtest.a")

1.3. 多个子目录(子目录中不含cmakelists.txt)

1
2
3
4
5
6
7
8
//#TODO:每个子目录都要包含在内
aux_source_directory(./UnitTests/template09 SRC09)
aux_source_directory(./UnitTests/template01 SRC01)
aux_source_directory(./UnitTests/sate_mode SRC02)
aux_source_directory(./UnitTests SRC00)

set(SOURCE ${SRC00} ${SRC01} ${SRC02} ${SRC09})
add_executable(test009 ${SOURCE})

-------------本文结束感谢您的阅读-------------