cmake的内置变量与message打印用法

一、预定义变量

    PROJECT_SOURCE_DIR 工程的根目录
    PROJECT_BINARY_DIR 运行cmake命令的目录,通常是${PROJECT_SOURCE_DIR}/build
    CMAKE_INCLUDE_PATH 环境变量,非cmake变量
    CMAKE_LIBRARY_PATH 环境变量
    CMAKE_CURRENT_SOURCE_DIR 当前处理的CMakeLists.txt所在的路径
    CMAKE_CURRENT_BINARY_DIR target编译目录
    使用ADD_SURDIRECTORY(src bin)可以更改此变量的值
    SET(EXECUTABLE_OUTPUT_PATH <新路径>)并不会对此变量有影响,只是改变了最终目标文件的存储路径
    CMAKE_CURRENT_LIST_FILE 输出调用这个变量的CMakeLists.txt的完整路径
    CMAKE_CURRENT_LIST_LINE 输出这个变量所在的行
    CMAKE_MODULE_PATH 定义自己的cmake模块所在的路径
    SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake),然后可以用INCLUDE命令来调用自己的模块
    EXECUTABLE_OUTPUT_PATH 重新定义目标二进制可执行文件的存放位置
    LIBRARY_OUTPUT_PATH 重新定义目标链接库文件的存放位置
    PROJECT_NAME 返回通过PROJECT指令定义的项目名称
    CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS 用来控制IF ELSE语句的书写方式

二、系统信息

    CMAKE_MAJOR_VERSION cmake主版本号,如2.8.6中的2
    CMAKE_MINOR_VERSION cmake次版本号,如2.8.6中的8
    CMAKE_PATCH_VERSION cmake补丁等级,如2.8.6中的6
    CMAKE_SYSTEM 系统名称,例如Linux-2.6.22
    CAMKE_SYSTEM_NAME 不包含版本的系统名,如Linux
    CMAKE_SYSTEM_VERSION 系统版本,如2.6.22
    CMAKE_SYSTEM_PROCESSOR 处理器名称,如i686
    UNIX 在所有的类UNIX平台为TRUE,包括OS X和cygwin
    WIN32 在所有的win32平台为TRUE,包括cygwin

三、开关选项

    BUILD_SHARED_LIBS 控制默认的库编译方式。如果未进行设置,使用ADD_LIBRARY时又没有指定库类型,默认编译生成的库都是静态库 (可在t3中稍加修改进行验证)
    CMAKE_C_FLAGS 设置C编译选项
    CMAKE_CXX_FLAGS 设置C++编译选项
 

四、打印信息

MESSAGE指令的语法:
MESSAGE([SEND_ERROR | STATUS | FATAL_ERROR] “message to display”…)
这个指令用于向终端输出用户定义的信息,包含了五种类型:

STATUS = '非重要'消息;-->'常用'
WARNING = CMake '警告', 会继续执行;
AUTHOR_WARNING = CMake 警告 (dev), 会'继续'执行;
SEND_ERROR = CMake 错误, '继续执行',但是会'跳过生成的步骤';-->'常用'
FATAL_ERROR = CMake 错误, '终止所有'处理过程; -->'常用'

cmake_minimum_required (VERSION 2.8)

message("this is my test")
message(STATUS "this is my STATUS TEST")
message(WARNING  "this is my WARNING TEST")

message("1.PROJECT_BINARY_DIR = ${PROJECT_BINARY_DIR}")
message("2.PROJECT_SOURCE _DIR = ${_DIR}")
message("3.CMAKE_CURRENT_SOURCE_DIR = ${CMAKE_CURRENT_SOURCE_DIR}")
message("4.CMAKE_CURRRENT_BINARY_DIR = ${CMAKE_CURRRENT_BINARY_DIR}")
message("5.CMAKE_CURRENT_LIST_FILE = ${CMAKE_CURRENT_LIST_FILE}")
message("6.CMAKE_CURRENT_LIST_LINE = ${CMAKE_CURRENT_LIST_LINE}")
message("7.CMAKE_MODULE_PATH = ${CMAKE_MODULE_PATH}")
message("8.CMAKE_SOURCE_DIR = ${CMAKE_SOURCE_DIR}")
message("9.EXECUTABLE_OUTPUT_PATH = ${EXECUTABLE_OUTPUT_PATH}")
message("10.LIBRARY_OUTPUT_PATH = ${LIBRARY_OUTPUT_PATH}")
message("11.PROJECT_NAME = ${PROJECT_NAME}")
message("12.PROJECT_VERSION_MAJOR = ${PROJECT_VERSION_MAJOR}")
message("13.PROJECT_VERSION_MINOR = ${PROJECT_VERSION_MINOR}")
message("14.PROJECT_VERSION_PATCH = ${PROJECT_VERSION_PATCH}")
message("15.CMAKE_SYSTEM = ${CMAKE_SYSTEM}")
message("16.CMAKE_SYSTEM_NAME = ${CMAKE_SYSTEM_NAME}")
message("17.CMAKE_SYSTEM_VERSION = ${CMAKE_SYSTEM_VERSION}")
message("18.BUILD_SHARED_LIBS = ${BUILD_SHARED_LIBS}")
message("19.CMAKE_C_FLAGS = ${CMAKE_C_FLAGS}")
message("20.CMAKE_CXX_FLAGS = ${CMAKE_CXX_FLAGS}")
message("21.CMAKE_SYSTEM_PROCESSOR   = ${CMAKE_SYSTEM_PROCESSOR}")

打印结果

 

参考:

cmake使用示例与整理总结_carl的修行-CSDN博客_cmake使用示例与整理总结

CMake之常用内置变量和message用法 - mohist - 博客园

cmake(三)CMake输出自定义信息_wzj_110的博客-CSDN博客


版权声明:本文为sinat_31608641原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。