Cmake的命令不区分打下写,例如message,set等命令;但Cmake的变量区分大小写。
为统一风格,本次的Cmake命令全部采用小写,变量全部采用大写加下划线组合。
Cmake变量
Cmake变量可用关键字set赋值,可以将变量赋值为开关,数字,字符串,列表形式,在之后的Cmake中会多次用到。
option为开关选项,通常作编译开关。
示例代码
option(OPEN_TEST "open test" ON)
set(FALSE_TEST FALSE)
set(NUMBER_TEST 3.14)
set(STRING_TEST "Cmake Test")
set(SOURCE_LIST_TEST main.cpp module1.cpp module2.cpp)
if (OPEN_TEST)
message(STATUS "open test: ${OPEN_TEST}")
endif()
if (NOT FALSE_TEST)
message(STATUS "false test: ${FALSE_TEST}")
endif()
message(STATUS "number test: ${NUMBER_TEST}")
message(STATUS "string test: ${STRING_TEST}")
message(STATUS "code list test: ${SOURCE_LIST_TEST}")
执行结果
-- open test: ON
-- false test: FALSE
-- number test: 3.14
-- string test: Cmake Test
-- code list test: main.cpp;module1.cpp;module2.cpp
变量的集合会以“;”隔开
Cmake传参
执行cmake命令时,Cmake可以针对变量传参,例如:
- 针对变量CMAKE_TOOLCHAIN_FILE 传参:
-DCMAKE_TOOLCHAIN_FILE=…/config.cmake - 针对变量CMAKE_BUILD_TYPE传参:
-DCMAKE_BUILD_TYPE=“Debug”
读取配置文件.cmake
一些公共的Cmake配置,不需要在cmake工程中再次配置,可以通过不同的cmake工程进行导入,该文件的后缀为.cmake,读取配置文件可通过传参导入,也可以通过CmakeLists关键字加载导入
通过cmake命令传参导入
cmake -G "$CMAKE_TYPE" ../ -DCMAKE_TOOLCHAIN_FILE=../config.cmake
通过关键字导入
include(${PROJECT_SOURCE_DIR}/common_config.cmake)
设置工程:project
当前版本的描述中对project的设置参数为
project(<PROJECT-NAME> [<language-name>...])
project(<PROJECT-NAME>
[VERSION <major>[.<minor>[.<patch>[.<tweak>]]]]
[DESCRIPTION <project-description-string>]
[HOMEPAGE_URL <url-string>]
[LANGUAGES <language-name>...])
LANGUAGES为指定语言,如果工程有多种语言混搭可以不设置该值
简单版直接就设置个工程名
set(MAIN_NAME CmakeTest)
project(${MAIN_NAME})
详细版即可添加对应的描述
set(MAIN_NAME CmakeTest)
project(${MAIN_NAME}
VERSION 1.2.3.4
DESCRIPTION "CmekTest"
HOMEPAGE_URL "https://cmake.org/cmake/help/v3.15/command/project.html")
打印工程变量
message("PROJECT_NAME ${PROJECT_NAME}")
message("PROJECT_VERSION ${PROJECT_VERSION}")
message("PROJECT_DESCRIPTION ${PROJECT_DESCRIPTION}