文章目录
Modern CMake 2:基本介绍
最低版本
CMakeLists.txt的第一行通常都是:
cmake_minimum_required(VERSION 3.1)
请注意,cmake_minimun_required
是不区分大小写的,但根据Modern CMake 1:Modern CMake简介中的正确模式所言,函数名需要使用小写。在CMake3.12中,对最低版本的要求可以是一个区间,比如VERSION 3.1…3.12,因此,在新工程中我们应该这写:
cmake_minimun_requeired(VERSION 3.1...3.14)
if(${CMAKE_VERSION} VERSION_LESS 3.12)
cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION})
endif()
设置project
设置project通常看起来像这样:
project(MyProject VERSION 1.0
DESCRIPTION "Very nice project"
LANGUAGES CXX
)
可选语言有C,CXX,Fortran,CUDA(CMAKE3.7+)
。默认的是C CXX
。DESCRIPTION
是在CMake3.9引入的,可以对project进行描述。
生成可执行程序
add_executable(one two.cpp three.h)
one即时exe的名字,也是CMake target的名字。紧接着是源代码文件列表。
生成library
生成library,使用函数add_library,如:
add_library(one STATIC two.cpp three.h)
我们可以选择生成库的类型,如STATIC
,SHARED
或MODULE
。默认选项是BUILD_SHARED_LIBS
,将根据其值是否为真决定是STATIC
还是SHARED
。
给target添加包含目录
target_include_directories(one PUBLIC include)
target_include_directories
把include目录添加给target。PUBLIC
关键字对exe来说没有太大的意义&