Cmake简易教程

cmake简易教程

1. 添加头文件目录INCLUDE_DIRECTORIES

它相当于g++选项中的-I参数的作用,也相当于环境变量中增加路径到CPLUS_INCLUDE_PATH变量的作用。

语法:

1
include_directories([AFTER|BEFORE] [SYSTEM] dir1 [dir2 ...])

语法:

1
link_directories(directory1 directory2 ...)

它相当于g++命令的-L选项的作用,也相当于环境变量中增加LD_LIBRARY_PATH的路径的作用。

1
link_directories("/home/server/third/lib")

语法:

1
link_libraries(library1 <debug | optimized> library2 ...)

语法:

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})

参考链接:

0%