- CMake 工具默认编译时不会显示编译器及编译选项等详细信息,在编译时使用
make VERBOSE=1
即可。 - CMake 的
message()
函数的使用 :
message( [STATUS|WARNING|AUTHOR_WARNING|FATAL_ERROR|SEND_ERROR] "message to display" ...)
/*
(无) = 重要消息;
STATUS = 非重要消息;
WARNING = CMake 警告, 会继续执行;
AUTHOR_WARNING = CMake 警告 (dev), 会继续执行;
SEND_ERROR = CMake 错误, 继续执行,但是会跳过生成的步骤;
FATAL_ERROR = CMake 错误, 终止所有处理过程;
*/
//变量输出使用 ${VAR}
- CMake 中定义变量:
CMake变量可以分为三类:一般变量、缓存变量,环境变量。
一般变量: 与其他普通比变量没有什么差异,作用域只在当前文件中。
缓存变量: 缓存变量与cmake -D
定义的变量一样,会被存储到 CMakeCache.txt 中,注意缓存变量若是要覆盖之前的值需要使用FORCE
属性。
环境变量: SET可以修改系统环境变量。
//一般变量
SET(VAR "tewst" ${VAR})
//环境变量
set(ENV{PATH} "$ENV{PATH}:/opt/myDir") //即修改了系统环境变量 `PATH`。
//缓存变量
SET(VAR "xyz" CACHE STRING "this is a comment of VAR") //此时若是缓存中已经存在 VAR,则会忽略此动作,VAR不会改变
SET(VAR "xyz" CACHE STRING "this is a comment of VAR" FORCE) //不论什么情况, VAR 都会被赋值为 "xyz"
-
CMake 选项开关的定义,
option
option
的使用形式option(USE_MBEDTLS "use mbedtls." OFF)
,此处相当于cmake .. -DUSE_MBEDTLS=OFF
。在 CMakeList.txt 中可以使用此选项开关。 -
add_definations
用于增加-D
定义,此定义将载预编译中使用。 -
add_compile_options
用于增加编译选项。此选项对所有c/c++/asm编译器都作用。而COMPILE_C_FLAGS/COMPIILE_CXX_FLAGS/CMAKE_ASM_NASM_FLAGS
分别针对c/c++/asm修改编译选项。target_compile_definitions
可以针对不同目标添加定义。 -
add_link_options
用于给所有目标添加链接选项。target_link_options
针对目标添加链接选项。CMAKE_EXE_LINKER_FLAGS/CMAKE_SHARED_LINKER_FLAGS/CMAKE_STATIC_LINKER_FLAGS
见名知意,此三个变量是分别为三类链接目标添加选项。 -
aux_source_directory
获取指定目录下的全部源文件,注意只能识别扩展名为 c, cpp,cxx等。 -
file(GLOB_RECURSE C_SRC_LIST ${PROJECT_SOURCE_DIR}/../*.c)
获取指定目录下全部*.c文件,注意子目录下的也会被识别。