一、概述

CMakeLists.txt是cmake编译系统构建器的构建文件,就像是make中的Makefile一样。

Makefile是通过固定的文件格式来构建目标,相对于Makefile而言,CMakeList并没有固定的语法格式,他是通过各种函数和指令来完成构建。

一个基本的CMakeList.txt内容结构为:

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,格式为:

set(SOURCE_DIR /usr/src/)

表示设置一个SOURCE_DIR的变量,其值为/usr/src

2.2 添加头文件目录

添加上级目录下的inc目录作为头文件的搜索路径:

include_directories(
    ../inc/
)

2.3 添加编译选项

添加编译选项的函数为add_compile_options,例如指定编译标准为c++11

add_compile_options(-std=c++11)
设置编译标准还可以使用:set(CMAKE_CXX_STANDARD 11)。

2.4 添加宏定义

添加一个__XTEST__的宏定义:

add_definitions(-D__XTEST__)

2.5 添加静态库

添加静态库依赖两个函数link_directoriestarget_link_libraries,用法如下:

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的后面声明。

最后修改:2020 年 01 月 30 日
如果觉得我的文章对你有用,请随意赞赏