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

03-cmake语法-变量,字符串的更多相关文章

  1. CMake语法—普通变量与函数(Normal Variable And Function)

    目录 CMake语法-普通变量与函数(Normal Variable And Function) 1 CMake普通变量与函数示例 1.1 CMakeLists.txt 1.2 执行CMake配置脚本 ...

  2. CMake语法—普通变量与子目录(Normal Variable And Subdirectory)

    目录 CMake语法-普通变量与子目录(Normal Variable And Subdirectory) 1 CMake普通变量与子目录示例 1.1 代码目录结构 1.2 父目录CMakeLists ...

  3. CMake语法—缓存变量(Cache Variable)

    目录 CMake语法-缓存变量(Cache Variable) 1 CMake缓存变量 2 定义缓存变量 2.1 定义格式 2.2 定义示例代码 2.3 运行结果 2.4 小结 3 CMakeCach ...

  4. 009 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 03 什么是变量?

    009 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 03 什么是变量? 什么是变量? 形象化的生活中的例子理解什么是变量以及变量的三个元素 我们可以根据客人要求 ...

  5. CMake语法—内置变量

    目录 CMake语法-内置变量 1 CMake变量分类 1.1 普通变量 1.2 缓存变量 1.3 环境变量 1.4 内置变量 2 CMake内置变量分类 2.1 提供信息的变量 2.2 改变行为的变 ...

  6. CMake语法—普通变量与包含、宏(Normal Variable And Include、Macro)

    目录 CMake语法-普通变量与包含.宏(Normal Variable And Include.Macro) 1 CMake普通变量与包含.宏示例 1.1 代码目录结构 1.2 根目录CMakeLi ...

  7. CMake语法—环境变量(Environment Variable)

    目录 CMake语法-环境变量(Environment Variable) 1 定义环境变量 2 应用环境变量 2.1 代码结构 2.2 示例代码 2.3 运行结果 3 小结 CMake语法-环境变量 ...

  8. cmake 常用变量和常用环境变量查表手册---整理 .

    一,cmake 变量引用的方式: 前面我们已经提到了,使用${}进行变量的引用.在 IF 等语句中,是直接使用变量名而不通过${}取值 二,cmake 自定义变量的方式: 主要有隐式定义和显式定义两种 ...

  9. cmake 常用变量和常用环境变量查表手册

    cmake 常用变量和常用环境变量查表手册 一,cmake 变量引用的方式: 前面我们已经提到了,使用${}进行变量的引用.在 IF 等语句中,是直接使用变量名而不通过${}取值 二,cmake 自定 ...

  10. cmake 语法

    语法说明 CMakeLists.txt 文件遵循一种简单的语法包括 注释,命令和空格字符.注释使用#符号,从符号开始之后的一行都表示注释.命令包括命令名,左括号,分隔参数的空白字符和右括号.命令既可以 ...

随机推荐

  1. LG3119 「USACO2015JAN」Grass Cownoisseur

    问题描述 LG3119 题解 显然,如果有个环,一定是全部走完的. 所以缩点,缩出一个 \(\mathrm{DAG}\) . 只能走一次反向,于是在正图和反图上各跑一次,枚举边,取 \(\mathrm ...

  2. Windows安装RabbitMQ并设置数据存储目录

    一.安装Elang 下载otp_win64_xx.x.exe,当前使用otp_win64_21.3.exe版本,按步骤完成安装. 下载地址:http://www.erlang.org/download ...

  3. antdmobile组件思维导图

  4. python xpath图片爬取

    import requests from urllib.request import urlretrieve from lxml import etree headers = { 'User-Agen ...

  5. WPF 鼠标移动时触发图片旋转(非动画)

    非动画,只是简单的触发器. 主要是针对旋转的写法. 代码 <Grid> <Image x:Name="image" Source="nifi3.gif& ...

  6. 使用SolrJ(即java客户端)开发Solr。

    1.什么是SolrJ呢? 答:Solrj是访问Solr服务的java客户端,提供索引和搜索的请求方法,SolrJ通常在嵌入在业务系统中,通过SolrJ的API接口操作Solr服务.开始配置schema ...

  7. DEDECMS安全设置怎样做,您就不会说它不安全了

    dedecms是好用,优化也好,就是不安全,个人是这样认为的,今天 闲着没事 整理了一些有助于dedecms网站安全的一些设置,可以说是目前最全的dedecms安全设置! 其一:保持DEDE更新,及时 ...

  8. Linux帮助——获取帮助

    Linux帮助——获取帮助 摘要:本文主要学习了Linux众多命令中最基础的帮助命令. 介绍 作用 Linux的所有操作都可以通过命令行来完成,所以学习Linux最好从命令行开始.因为Linux的命令 ...

  9. Java常用类Date相关知识

    Date:类 Date 表示特定的瞬间,精确到毫秒. 在 JDK 1.1 之前,类 Date 有两个其他的函数.它允许把日期解释为年.月.日.小时.分钟和秒值.它也允许格式化和解析日期字符串. Dat ...

  10. 超时空英雄传说2复仇魔神完全攻略&秘技

    ╓─╥───────────────────────────────────────────────────╥─╖ ║ ║ 超 時 空 英 雄 傳 說 2 ║ ║ ║ ║ --復 仇 魔 神-- ║ ...