语法格式:指令(参数1 参数2 …)
参数使用括号括起来
参数之间使用空格或分号分开
指令大小写无关,参数和变量大小写有影响
1.cmake_minimum_required
:指定Cmake的最小版本要求;
# CMake最小版本要求为2.8.3
cmake_minimum_required(VERSION 2.8.3)
2.project
:定义工程名称,并且可以指定支持的语言;
# 指定工程名称为***
project(***)
3.set
:显式的定义变量;
# 定义SRC变量,其值为sayhello.cpp hello.cpp
set(SRC sayhello.cpp hello.cpp)
4.include_directories
:向工程添加多个特定的头文件搜索路径;
#将 /usr/bin/lib 与 ./lib 添加到头文件搜索路径
include_directories(/usr/bin/lib ./lib)
5.link_directories
:向工程添加多个特定的库文件搜索路径;
# 将/usr/lib/mylibfolder 和 ./lib 添加到库文件搜索路径
link_directories(/usr/lib/mylibfolder ./lib)
6.add_library
:生成库文件;
# 通过变量 SRC 生成 lib hello.so 共享库
add_library(hello SHARED ${SRC})
7.add_complie_options
:添加编译参数;
# 添加编译参数 -Wall -std=c++11 -O2
add_compile_options(-Wall -std=c++11 -O2)
8.add_executable
:生成可执行文件;
# 编译main.cpp生成可执行文件main
add_executable(main main.cpp)
9.target_link_libraries
:为targget添加需要链接的共享库;
# 将hello动态库文件链接到可执行文件main
target_link_libraries(main hello)
10.add_subdirectory
:向当前工程添加存放源文件的子目录,并可以指定中间二进制和目标二进制的存放位置;
# 添加src子目录,src中需有一个CMakeLists.txt
add_subdirectory(src)
11.aux_source_directory
:发现一个目录下所有的源代码文件并将列表存储在一个变量中,用于临时自动构建源文件列表。
# 定义SRC变量,其值为当前目录下所有的源代码文件
aux_source_directory(. SRC)
# 编译SRC变量所代表的源代码文件,生成main可执行文件
add_executable(main ${SRC})
1.CMAKE_C_FLAGS
gcc编译选项
CMAKE_CXX_FLAGS
g++编译选项
# 在CMAKE_CXX_FLAGS编译选项后追加-std=c++11
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
2.CMAKE_DUILD_TYPE
编译类型,分Debug和Release两种
# 设定编译类型为debug,调试时需要选择debug
set(CMAKE_BUILD_TYPE Debug)
# 设定编译类型为release,发布时需要选择release
set(CMAKE_BUILD_TYPE Release)
3.CMAKE_BINARY_DIR
、PROJECT_BINARY_DIR
、_BINARY_DIR
这三个变量指代的内容是一致的。
在当前目录下,创建build文件夹:mkdir build
,进入到build目录下:cd build
,执行cmake ..
命令,执行make
命令,生成目标。