cmake_minimum_required | 指定要求最小的Cmake版本,如果版本小于该要求,程序终止。 |
project(test) | 设置当前项目名称test。 |
CMAKE_BUILD_TYPE | Debug:调试模式,输出调试信息,不做优化。Release:发布模式,没有调试,全优化。 RelWithDeblnfo:类似Release,但包括调试信息。 MinSizeRel: 一种特殊的Release,会优化库的大小。 |
CMAKE_CXX_FLAGS | 编译CXX的设置标志:比如 -std=c++1、-Wall、-O3。编译过程中输出警告(warning):set(CMAKE_CXX_FLAGS “-Wall”)。追加,不会丢失之前的定义:set(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS}-Wall")。 |
include_directories | 指定头文件的搜索路径,编译查找相应头文件。例如:main.cpp中使用到路径/usr/local/include/opencv/cv.h中这个文件。CMakeLists.txt中添加include_directoires(/usr/local/include)。使用时在mian.cpp前#include“opencv/cv.h”。 |
set(variable value) | 用变量代替值。set(SRC_LST main.cpp other.cpp)表示定义SRC_LST代替后面这两个文件。 |
add_executable(hello main.cpp) | 用指定的源文件添加可执行文件。工程会用main.cpp生成一个文件名为 hello的可执行文件。 |
add_library(libname STATIC/SHARED sources) | 指定的源文件生成链接库文件。STATIC为静态链接库,SHARED为共享链接库。 |
target_link_libraries(target library1 library2) | 为库或这二进制文件添加库链接,但是要添加add_executable之后。就是上面定义了hello的这个可执行文件就是(target),如果想要依赖…的库就是需要加入依赖库library1、library2、library3。 |
add_subdirectory(source_dir) | 向当前工程添加存放源文件的之目录可以是绝对路径或相对路径。 |
aux_source_directory(dir varname) | 在目录下查找所有源文件。 |
message(mode “message text”) | 打印输出信息,mode包括FATAL_FRROR、WARNING、STATUS、DEBUG等。message(STATUS “Set debug mode”) |
一些预定义好的指令 | PROJECT_NAME:项目名称,与project(xxx)一致。PROJECT_SOURCE_DIR:即内涵project()指令的CMakeLists所在的文件夹。EXECUTABLE_OUTPUT_PATH:可执行文件输出路径。LIBRARY_OUTPUT_PATH:库文件输出路径。CMAKE_BINARY_DIR:默认是build文件夹所在的绝对路径。CMAKE_SOURCE_DIR:源文件所在的绝对路径。 |
find_package(package version EXACT/QUIET/REQUIRED) | 功能:采用两种模式(FindXXX.cmake和XXXConfig.cmake)搜索外部库例子:find_package(OpenCV 3.4 REQUIRED)version:指定查找库的版本号。EXACT:要求该版本号必须精确匹配。QUIET:禁掉没有找到时的警告信息。REQUIRED选项表示如果包没有找到的话,CMake的过程会终止,并输出警告信息。如果XXX安装时没有找到XXXConfig.cmake,需要在CMakeLists.txt最前面添加XXX的搜索路径。就是在find_package之前添加set(XXX 路径/buifind_pfind_p |
find_package(package version EXACT/QUIET/REQUIRED) | 当find_package找到一个库的时候,一下变量会自动初始化(也就是生成):< N A M E>_FOUND:显示是否找到库的标记(无空格)。< N A M E>_INCLUDE_DIRS :头文件路径。< N A M E>_LIBRARIES或< NAME >_LIBS:库文件 |
list | 列表操作(读、搜索、修改、排序) |
If,elseif,endif | 判断语句。使用和C语言一致。 |
foreach | 循环指令。格式1:foreach(< 变量名> < 变量值>)格式2:foreach(变量名 RANGE 起始值 停止值 补长) |
以上为常用CMake的指令,遇到不懂得,可去CMake的官网中help查询。 | |