- 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文件,注意子目录下的也会被识别。
本文详细介绍了CMake在编译过程中如何显示详细信息、使用message()函数、管理变量、设置选项开关以及添加编译和链接选项。重点讲解了CMake的缓存变量、一般变量和环境变量的定义与使用,以及如何通过add_compile_options和target_compile_definitions等函数控制编译选项。同时,还涵盖了文件搜索和源文件收集的方法。

934

被折叠的 条评论
为什么被折叠?



