我们承担ROS,FastDDS等通信中间件,C++,cmake等技术的项目开发和专业指导和培训,有10年+相关工作经验,质量有保证,如有需要请私信联系。
编译相关
PROJECT_NAME
:由当前或上一级project 命令指定的名称CMAKE_PROJECT_NAME
:top level的CMakeLists.txt中project命令指定的project名称CMAKE_CURRENT_SOURCE_DIR
:当前CMakeLists.txt所在的绝对路径的目录CMAKE_CURRENT_BINARY_DIR
:编译的二进制文件所在的绝对路径目录CMAKE_COMMAND
:cmake可执行文件的全路径,这个常量对于cmake -E有用PROJECT_BINARY_DIR
:到build目录的全路径CMAKE_FILES_DIRECTORY
:生成cmake的所有文件的目录,一般为/CMakeFiles,运行message(STATUS "${PROJECT_BINARY_DIR}, ${CMAKE_FILES_DIRECTORY}")
显示:CMAKE_MODULE_PATH
指定include或find_package命令查找的路径CMAKE_ERROR_DEPRECATED
:如果是TRUE,对于废弃功能会报错。默认为FALSECMAKE_WARN_DEPRECATED
:如果是非FALSE,使用废弃功能会报告警。默认为TRUECMAKE_BUILD_TYPE
:指定要构建的类型,值为 Debug,Release,RelWithDebInfo,MinSizeRel等,该变量被设置为缓存变量(被谁设置为缓存变量?),可以通过缓存进行编辑:
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE)
endif()
message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
CMAKE_CONFIGURATION_TYPES
:可以对生成器的可用配置类型进行调整,该变量将接受一个值列表。(待验证)
cmake .. -G"Visual Studio 12 2017 Win64" -D CMAKE_CONFIGURATION_TYPES="Release;Debug"
# 将为Release和Debug配置生成一个构建树。然后,可以使--config标志来决定构建这两个中的哪一个:
cmake --build . --config Release
CMAKE_LIBRARY_OUTPUT_DIRECTORY
:构建的library文件存放的路径CMAKE_ARCHIVE_OUTPUT_DIRECTORY
:构建的archive目标文件存放的路径,这个变量用来初始化ARCHIVE_OUTPUT_DIRECTORY
属性CMAKE_RUNTIME_OUTPUT_DIRECTORY
:构建的runtime目标文件存放的路径,这个变量用来初始化RUNTIME_OUTPUT_DIRECTORY
属性CMAKE_CXX_FLAGS/CMAKE_C_FLAGS
:用于定义编译C++/C代码时所使用的编译器标志,官网定义在这里,例如:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") # 启用C++11
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address") # 启用AddressSanitizer,只这一行就可以,不知道下行的作用?
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address")
BUILD_SHARED_LIBS
这个变量用于决定构建的是shared库还是static库。如果被设置为ON则为shared,否则默认为static库
安装相关
CMAKE_INSTALL_PREFIX
:调用install()
命令时使用。指定安装位置前缀,在install的时候使用。在设置完之后,执行install时可以通过DESTINATION安装在该变量指定的位置。UNIX默认路径为/usr/local
,Windows默认为C:/Program Files/${PROJECT_NAME}
- 方式1:在cmake命令行指定:
cmake -DCMAKE_INSTALL_PREFIX=<install_dir>
- 方式2:cmake中设置,要加在project之后:
set(CMAKE_INSTALL_PREFIX <install_dir>)
- 方式1:在cmake命令行指定:
- CMAKE_BINARY_DIR 构建树的最顶级目录。
cmake_print_variables(CMAKE_BINARY_DIR CMAKE_SOURCE_DIR)
验证结果为
编译器相关
CMAKE_<LANG>_COMPILER
编译器的路径,可以是C,CXX,可以通过以下方式指定编译(未验证)器:
set(CMAKE_C_COMPILER /full/path/to/gcc --arg1 --arg2)
cmake ... -DCMAKE_C_COMPILER='qcc;--arg1;--arg2'
。- 通过导出环境变量CXX(C++编译器)、CC(C编译器):
env CXX=clang++
CMAKE_<LANG>_COMPILER_LOADED
:如果为项目启用了语言<LANG>
,则将设置为TRUE。
CMAKE_<LANG>_COMPILER_ID
:编译器标识字符串,编译器供应商所特有。例如,GCC用于GNU编译器集合,AppleClang用于macOS上的Clang, MSVC用于Microsoft Visual Studio编译器。注意,不能保证为所有编译器或语言定义此变量。
CMAKE_COMPILER_IS_GNU<LANG>
:如果语言<LANG>
是GNU编译器集合的一部分,则将此逻辑变量设置为TRUE。注意变量名的<LANG>
部分遵循GNU约定:C语言为CC, C++语言为CXX, Fortran语言为G77。值列表点击这个
CMAKE_<LANG>_COMPILER_VERSION
:此变量包含一个字符串,该字符串给定语言的编译器版本。版本信息在major[.minor[.patch[.tweak]]]
中给出。但是,对于CMAKE_<LANG>_COMPILER_ID
,不能保证所有编译器或语言都定义了此变量。
CMAKE_SYSTEM_PROCESSOR
:当前运行的CPU在CMake的名称
CMAKE_HOST_SYSTEM_PROCESSOR
当前正在为其构建的CPU的名称,在交叉编译时有着非常重要的作用。