语法格式:指令(参数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})
CMake常用变量
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 这三个变量指代的内容是一致的。
CMake编译工程
在当前目录下,创建build文件夹:mkdir build ,进入到build目录下:cd build ,执行cmake .. 命令,执行make 命令,生成目标。
|