-
cmake_minimum_required: 指定CMake的最小版本要求
cmake_minimum_required(VERSION versionNumber [FATAL_ERROR])
cmake_minimumrequired(VERSION 2.8.3)
-
project: 定义工程名称,并可指定工程支持的语言
project(projectname [CXX] [C] [Java])
project(HELLOWORLD)
-
set: 显式的定义变量
set(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE]])
set(SRC sayhello.cpp hello.cpp)
-
include_directories: 向工程添加多个特定的头文件搜索路径–>相当于指定g++编译器的-I参数
include_directories([AFTER | BEFORE] [SYSTEM] dir1 dir2 …)
include_directories(/usr/include/myincludefolder ./include)
-
link_directories: 向工程添加多个特定的库文件搜索路径 --> 相当于指定g++编译器的-L参数
link_directories(dir1 dir2…)
-
add_library: 生成库文件
add_library(libname [SHARED | STATIC | MODULE] [EXCLUDE_FROM_ALL] source1 source2 … sourceN)
add_library(hello SHARED ${SRC}) --> 通过变量SRC生成libhello.so共享库,注意库名字掐头去尾
-
add_compile_options: 添加编译参数
add_compile_options( …)
add_compile_options(-Wall -std=c++11 -O2)
-
add_executable: 生成可执行文件
add_executable(exename source1 source2 … sourceN)
add_executable(main main.cpp)
-
target_link_libraries: 为target添加需要链接的库 --> 相当于指定g++编译器的-l参数
target_link_libraries(main hello)
-
add_subdirectory: 向当前工程添加存放源文件的子目录,并可以指定中间二进制和目标二进制存放的位置
add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL])
add_subdirectory(src) --> 添加src子目录,src中需要一个CMakeLists.txt
-
aux_source_directory: 发现一个目录下所有的源代码文件并将列表存储在一个变量中,这个指令临时被用来自动构建源文件列表
aux_source_directory(dir VARIABLE)
aux_source_directory(. SRC)
add_executable(main ${SRC})
-
CMake常用变量
(1)CMAKE_C_FLAGS gcc编译选项
CMAKE_CXX_FLAGS g++编译选项
set(CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -std=c++11”) ->在g++编译选项后追加
(2)CMAKE_BUILD_TYPE 编译类型(Debug, Release)
set(CMAKE_BUILD_TYPE Debug) --> 设定编译类型为debug,调试时需要选择debug
set(CMAKE_BUILD_TYPE Release) -->发布时选择release
(3)CMAKE_C_COMPILER: 指定C编译器
CMAKE_CXX_COMPILER: 指定C++编译器
EXECUTABLE_OUTPUT_PATH: 可执行文件输出的存放路径
LIBRARY_OUTPUT_PATH: 库文件输出的存放路径