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

 

posted @ 2018-04-18 14:25  路边的十元钱硬币  阅读(3201)  评论(0编辑  收藏  举报