cmake简易教程
1. 添加头文件目录INCLUDE_DIRECTORIES
它相当于g++选项中的-I参数的作用,也相当于环境变量中增加路径到CPLUS_INCLUDE_PATH变量的作用。
语法:
1
|
include_directories([AFTER|BEFORE] [SYSTEM] dir1 [dir2 ...])
|
2. 添加需要链接的库文件目录LINK_DIRECTORIES
语法:
1
|
link_directories(directory1 directory2 ...)
|
它相当于g++命令的-L选项的作用,也相当于环境变量中增加LD_LIBRARY_PATH的路径的作用。
1
|
link_directories("/home/server/third/lib")
|
3. 添加需要链接的库文件路径LINK_LIBRARIES
语法:
1
|
link_libraries(library1 <debug | optimized> library2 ...)
|
4. 设置要链接的库文件的名称TARGET_LINK_LIBRARIES
语法:
1
2
|
target_link_libraries(<target> [item1 [item2 [...]]]
[[debug|optimized|general] <item>] ...)
|
5. 查找库所在目录FIND_LIBRARY
语法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
find_library (<VAR> name1 [path1 path2 ...])
find_library (
<VAR>
name | NAMES name1 [name2 ...] [NAMES_PER_DIR]
[HINTS path1 [path2 ... ENV var]]
[PATHS path1 [path2 ... ENV var]]
[PATH_SUFFIXES suffix1 [suffix2 ...]]
[DOC "cache documentation string"]
[NO_DEFAULT_PATH]
[NO_CMAKE_ENVIRONMENT_PATH]
[NO_CMAKE_PATH]
[NO_SYSTEM_ENVIRONMENT_PATH]
[NO_CMAKE_SYSTEM_PATH]
[CMAKE_FIND_ROOT_PATH_BOTH |
ONLY_CMAKE_FIND_ROOT_PATH |
NO_CMAKE_FIND_ROOT_PATH]
)
|
例子如下:
1
|
FIND_LIBRARY(RUNTIME_LIB rt /usr/lib /usr/local/lib NO_DEFAULT_PATH)
|
cmake会在目录中查找,如果所有目录中都没有,值RUNTIME_LIB就会被赋为NO_DEFAULT_PATH
6. 查找源文件和头文件
1
2
3
|
# 查找指定目录下的所有.cpp与.h文件 并存放到指定变量名SC_FILES中
FILE(GLOB SC_FILES "*.cpp" "*.h")
|
7. 添加源文件目录
使用 aux_source_directory
命令,该命令会查找指定目录下的所有源文件,然后将结果存进指定变量名。
语法:
1
2
3
4
|
aux_source_directory(<dir> <variable>)
# 生成链接库
add_library (MathFunctions ${DIR_LIB_SRCS})
|
参考链接: