CMake入门知识(3)

目录

1.CMake 系统信息

2.资料夹和档案信息

3. 各类flags (一般用 set命令设置)


1.CMake 系统信息

CMAKE_SYSTEM
系统全名,如 "Linux-2.4.22","FreeBSD-5.4-RELEASE" 或 "Windows 5.1"


CMAKE_SYSTEM_NAME
系统名称,如 "Linux", "FreeBSD" or "Windows"


CMAKE_SYSTEM_VERSION
只有 CMAKE_SYSTEM 当中版本的部分


CMAKE_SYSTEM_PROCESSOR
CPU 名称,如 "Intel(R) Pentium(R) M processor 2.00GHz"


CMAKE_GENERATOR

在命令列所指定的 Generator 名称

message("CMAKE_SYSTEM:" ${CMAKE_SYSTEM})
message("CMAKE_SYSTEM_NAME:" ${CMAKE_SYSTEM_NAME})
message("CMAKE_SYSTEM_VERSION:" ${CMAKE_SYSTEM_VERSION})
message("CMAKE_SYSTEM_PROCESSOR:" ${CMAKE_SYSTEM_PROCESSOR})
message("CMAKE_GENERATOR:" ${CMAKE_GENERATOR})

CMake入门知识(3)_第1张图片


2.资料夹和档案信息

CMAKE_SOURCE_DIR
内容为 source tree 根目录的完整路径,也就是 CMake 开始建置过程的进入点。


CMAKE_BINARY_DIR
内容为 binary tree 根目录的完整路径,在 in-source build 的时候值与 CMAKE_SOURCE_DIR 相同。


PROJECT_SOURCE_DIR
目前正在处理中的专案最上层目录,即内含 project() 指令的 CMakeLists 所在资料夹。


PROJECT_BINARY_DIR
目前所属专案的建置根目录。在 in-source build 时和 PROJECT_SOURCE_DIR 相同。


CMAKE_CURRENT_SOURCE_DIR
目前正在处理的 CMakeLists.txt 所在位置。


CMAKE_CURRENT_BINARY_DIR
目前正在处理的 CMakeLists.txt 对应的建置资料夹位置。在 in-source build 时和 CMAKE_CURRENT_SOURCE_DIR 相同。


CMAKE_CURRENT_LIST_DIR
表示正在处理的 CMakeLists.txt 文件的所在的目录的绝对路径(2.8.3 以及以后版本才支持)


CMAKE_ARCHIVE_OUTPUT_DIRECTORY
用于设置 ARCHIVE 目标的输出路径


CMAKE_LIBRARY_OUTPUT_DIRECTORY
用于设置 LIBRARY 目标的输出路径


CMAKE_RUNTIME_OUTPUT_DIRECTORY
用于设置 RUNTIME 目标的输出路径

message("CMAKE_SOURCE_DIR:" ${CMAKE_SOURCE_DIR})
message("CMAKE_BINARY_DIR:" ${CMAKE_BINARY_DIR})
message("PROJECT_SOURCE_DIR:" ${PROJECT_SOURCE_DIR})
message("PROJECT_BINARY_DIR:" ${PROJECT_BINARY_DIR})
message("CMAKE_CURRENT_SOURCE_DIR:" ${CMAKE_CURRENT_SOURCE_DIR})
message("CMAKE_CURRENT_BINARY_DIR:" ${CMAKE_CURRENT_BINARY_DIR})
message("CMAKE_CURRENT_LIST_DIR:" ${CMAKE_CURRENT_LIST_DIR})
message("CMAKE_ARCHIVE_OUTPUT_DIRECTORY:" ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY})
message("CMAKE_LIBRARY_OUTPUT_DIRECTORY:" ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
message("CMAKE_RUNTIME_OUTPUT_DIRECTORY:" ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})

CMake入门知识(3)_第2张图片

 LIBRARY_OUTPUT_PATH

用于设置 可执行程序的输出路径

EXECUTABLE_OUTPUT_PATH

用于设置 库文件的输出路径

SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)

CMAKE_FIND_ROOT_PATH_BOTH
先查找 CMAKE_FIND_ROOT_PATH  这个路径,再查找全局路径(find_xx函数专用)

NO_CMAKE_FIND_ROOT_PATH
不在 CMAKE_FIND_ROOT_PATH 下进行查找(find_xx函数专用)

ONLY_CMAKE_FIND_ROOT_PATH
只在 CMAKE_FIND_ROOT_PATH 这个路径下查找(find_xx函数专用)


3. 各类flags (一般用 set命令设置)

CMAKE_BUILD_TYPE
控制建置类型,值可为下列之一:
 None: 编译器默认值
 Debug: 产生除错信息
 Release: 进行最佳化
 RelWithDebInfo: 进行最佳化,但仍然会启用 DEBUG flag
 MinSizeRel: 进行程式码最小化

C /C++编译标志相关变量
 CMAKE_C_FLAGS
 CMAKE_C_FLAGS_[DEBUG|RELEASE|MINSIZEREL|RELWITHDEBINFO]   CMAKE_CXX_FLAGS
 CMAKE_CXX_FLAGS_[DEBUG|RELEASE|MINSIZEREL|RELWITHDEBINFO] 

set( CMAKE_CXX_FLAGS "-std=c++11 -fPIC -Wall -Wextra -Werror -Ofast" )
set( CMAKE_C_FLAGS   "-fPIC -Wall -Werror -O3 -std=gnu99" )

链接标志相关变量
 CMAKE_EXE_LINKER_FLAGS
 CMAKE_EXE_LINKER_FLAGS_[DEBUG|RELEASE|MINSIZEREL|RELWITHDEBINFO]
 CMAKE_MODULE_LINKER_FLAGS
 CMAKE_MODULE_LINKER_FLAGS_[DEBUG|RELEASE|MINSIZEREL|RELWITHDEBINFO]
 CMAKE_SHARED_LINKER_FLAGS
 CMAKE_SHARED_LINKER_FLAGS_[DEBUG|RELEASE|MINSIZEREL|RELWITHDEBINFO]

set ( CMAKE_EXE_LINKER_FLAGS 
      "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath -Wl,${CMAKE_LIBRARY_OUTPUT_DIRECTORY}" )

你可能感兴趣的:(CMake,c++)