03-cmake语法-变量,字符串
CMake的基本数据类型是字符串(不区分大小写),一组字符串在一起称为列表(list)。
条件判断中的取值情况如下表:
真 | 1, ON, YES, TRUE, Y, 非0的数 |
假 | 0, OFF, NO, FALSE, N, IGNORE, 空字符串,以“-NOTFOUND”结尾的字符串 |
变量显式定义
set(VAR a b c) # 输出 VAR = a;b;c message("VAR = ${VAR}")
set(VAR a)就是一个字符串,set(VAR a b c)就是一个字符串list。
set(CMAKE_INSTALL_PREFIX "/usr/local" CACHE PATH "Installation Directory")
CACHE PATH表示的含义暂时还没搞清楚。
常用部分内部变量
使用是,使用 set 命令赋值。
比如:
set(CMAKE_BUILD_TYPE "Debug")
CMAKE_C_COMPILER | 指定C编译器 |
CMAKE_CXX_COMPILER | |
CMAKE_C_FLAGS | 编译C文件时的选项,如-g;也可以通过add_definitions添加编译选项 |
EXECUTABLE_OUTPUT_PATH | 可执行文件的存放路径 |
LIBRARY_OUTPUT_PATH | 库文件路径 |
CMAKE_BUILD_TYPE | build 类型(Debug, Release, ...),CMAKE_BUILD_TYPE=Debug |
BUILD_SHARED_LIBS | 生成分享库 |
BUILD_LIBS | 生成静态库 |
CMAKE_BINARY_DIR |
一样的,cmake 的时候,所在的路径。(一般,我们新建build,然后cd进去,再cmake ..,这个路径就是build)(一般我们希望cmake生成的东西单独在一个文件夹,就是指这里) |
PROJECT_BINARY_DIR | |
<projectname>_BINARY_DIR | |
CMAKE_SOURCE_DIR |
一样的,表示工程顶层目录。(和以上的区别,就是这的路径为build之外,一般指源代码所在文件路径)。 |
PROJECT_SOURCE_DIR |
|
<projectname>_SOURCE_DIR |
|
CMAKE_CURRENT_SOURCE_DIR | CMakeLists.txt 所在路径 |
CMAKE_CURRRENT_BINARY_DIR |
如果是 in-source 编译(没有新建build),它跟 CMAKE_CURRENT_SOURCE_DIR 一致,如果是 out-of-source 编译(新建了build),他指的是 target 编译目录。 |
CMAKE_CURRENT_LIST_FILE |
输出调用这个变量的 CMakeLists.txt 的完整路径 |
CMAKE_CURRENT_LIST_LINE |
输出这个变量所在的行 |
CMAKE_MODULE_PATH |
这个变量用来定义自己的 cmake 模块所在的路径。也就是xxx.cmake文件 |
EXECUTABLE_OUTPUT_PATH |
用来重新定义最终结果的存放目录,可执行文件 |
LIBRARY_OUTPUT_PATH |
用来重新定义最终结果的存放目录,库文件 |
PROJECT_NAME |
返回通过 PROJECT 指令定义的项目名称 |
CMAKE_BUILD_TYPE *** |
生成 Debug 版和 Release 版的程序 |
CMAKE_CXX_FLAGS_DEBUG |
***为Debug,使用这个参数生成 Makefile |
CMAKE_C_FLAGS_DEBUG |
***为Debug,使用这个参数生成 Makefile |
CMAKE_CXX_FLAGS_RELEASE |
***为Release,使用这个参数生成 Makefile |
CMAKE_C_FLAGS_RELEASE |
***为Release,使用这个参数生成 Makefile |
示例:
PROJECT(main) CMAKE_MINIMUM_REQUIRED(VERSION 2.6) SET(CMAKE_SOURCE_DIR .) SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb") SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall") AUX_SOURCE_DIRECTORY(. DIR_SRCS) ADD_EXECUTABLE(main ${DIR_SRCS})
将工程设置为Debug模式:
SET(CMAKE_BUILD_TYPE "Debug")
变量引用
使用 ${} 比如:
${CMAKE_BINARY_DIR}
参考
http://www.cnblogs.com/xianghang123/p/3556423.html
https://www.jianshu.com/p/44ba033c262a