一、概述
CMakeLists.txt 是 cmake 编译系统构建器的构建文件,就像是 make 中的 Makefile 一样。
Makefile 是通过固定的文件格式来构建目标,相对于 Makefile 而言,CMakeList 并没有固定的语法格式,他是通过各种函数和指令来完成构建。
一个基本的 CMakeList.txt 内容结构为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
cmake_minimum_required(VERSION 3.4.1) project("link_list") # 设置变量 set(PROJ_ROOT_DIRECTORY /home/maqian/Desktop/code2019) set(PROJ_ROOT_LIBRARY ${PROJ_ROOT_DIRECTORY}/lib) # 添加头文件 include_directories( ../../common ) # 添加编译选项 add_compile_options(-std=c++11) # 添加宏定义 add_definitions(-D__LINKLIST_TEST__) # 添加目标 add_executable(doubly_linklist doubly_linklist.cpp) # 添加静态库 link_directories(${PROJ_ROOT_LIBRARY}) target_link_libraries(doubly_linklist ${PROJ_ROOT_LIBRARY}/libgtest.a) |
二、常见用法
2.1 设置变量
设置变量的函数是 set
,格式为:
1 |
set(SOURCE_DIR /usr/src/) |
表示设置一个 SOURCE_DIR
的变量,其值为/usr/src
。
2.2 添加头文件目录
添加上级目录下的 inc
目录作为头文件的搜索路径:
1 2 3 |
include_directories( ../inc/ ) |
2.3 添加编译选项
添加编译选项的函数为 add_compile_options
,例如指定编译标准为 c++11
:
1 |
add_compile_options(-std=c++11) |
设置编译标准还可以使用:set(CMAKE_CXX_STANDARD 11) 。
2.4 添加宏定义
添加一个__XTEST__
的宏定义:
1 |
add_definitions(-D__XTEST__) |
2.5 添加静态库
添加静态库依赖两个函数 link_directories
和 target_link_libraries
,用法如下:
1 2 3 4 |
set(PROJ_ROOT_LIBRARY /usr/lib/) link_directories(${PROJ_ROOT_LIBRARY}) target_link_libraries(doubly_linklist ${PROJ_ROOT_LIBRARY}/libgtest.a) |
要注意的是 PROJ_ROOT_LIBRARY
设置的路径是全路径,并且 target_link_libraries 要在 add_executable 的后面声明。
评论