CMake的基本数据类型是字符串(不区分大小写),一组字符串在一起称为列表(list)。

条件判断中的取值情况如下表:

1, ON, YES, TRUE, Y, 非0的数 
0, OFF, NO, FALSE, N, IGNORE, 空字符串,以“-NOTFOUND”结尾的字符串

变量显式定义

set(VAR a b c)# 输出 VAR = a;b;cmessage("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

转载于:https://www.cnblogs.com/alexYuin/p/8874579.html

03-cmake语法-变量,字符串相关推荐

  1. 【Groovy】Groovy 方法调用 ( 字符串切割 | 使用 Java 语法切割字符串 | 使用 Groovy 语法切割字符串直接为变量赋值 | 数组赋值给变量 变量个数小于等于数组长度 )

    文章目录 一.字符串切割 1.使用 Java 语法切割字符串 2.使用 Groovy 语法切割字符串直接为变量赋值 3.数组赋值给变量 变量个数小于等于数组长度 二.完整代码示例 一.字符串切割 在 ...

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

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

  3. 【Tools】cmake 常用变量和常用环境变量查表手册---整理

    原文链接:https://blog.csdn.net/gubenpeiyuan/article/details/8667279 一.cmake 变量引用的方式: 前面我们已经提到了,使用${}进行变量 ...

  4. cmake 常用变量和常用环境变量

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

  5. python基础之---03基本语法

    python基础之---03基本语法 一:编码 默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串. # -*- coding: utf-8 -*- 也 ...

  6. JS-概述-基本语法-变量-数据类型

    概述-基本语法-变量-数据类型 1 JavaScript 概述 ① JavaScript 的特点 JavaScript 是一门动态的,弱类型的,解释型的,基于对象的脚本语言. 动态: 程序执行的时候才 ...

  7. Python教程学习简记1--Python数据类型和变量 字符串和编码 list和tuple 条件判断 循环 dict和set

    本文主要是学习Python基础: Python数据类型和变量 字符串和编码 list和tuple 条件判断 循环 dict和set 本文根据廖雪峰的官方网站-Python教程,认真学习,一步一步实操并 ...

  8. CMake常用变量和指令

    通过一个或多个CMakeLists.txt文件来控制CMake项目,CMakeLists.txt中包含一系列命令来描述需要执行的构建. 1. CMake语法 CMakeLists.txt中的指令格式是 ...

  9. cmake:在各级目录之间共享变量(cmake cache变量)

    摘要: 本文记录一下 CMake 变量的定义.原理及其使用.CMake 变量包含 Normal Variables.Cache Variables.通过 set 指令可以设置两种不同的变量.也可以在 ...

  10. cmake cache变量_反复研究好几遍,我才发现关于 CMake 变量还可以这样理解!

    本文的排版有些问题,如果您觉得本文排版不太好看,可以到这里查看: 反复研究好几遍,我才发现关于 CMake 变量还可以这样理解!​mp.weixin.qq.com 摘要: 本文记录一下 CMake 变 ...

最新文章

  1. C++ set 的使用
  2. 非常实用的 Python 技巧
  3. java 线程池学习小记
  4. 对volatile的理解
  5. Redis 的各项功能解决了哪些问题?
  6. No execution.target specified in your configuration file.
  7. [vue] vue的:class和:style有几种表示方式?
  8. 第九节:JWT简介和以JS+WebApi为例基于JWT的安全校验
  9. 如何将js加入到HTML中
  10. 高校固定资产折旧使用计算机,第六章固定资产_计算机会计学_ppt_大学课件预览_高等教育资讯网...
  11. php input type='button' 颜色,HTML5 input新增type属性color颜色拾取器的实例代码
  12. BUUCTF [CISCN2019 总决赛 Day2 Web1] Easyweb
  13. .bin文件的反汇编记录
  14. VMware 虚拟化中:厚置备延迟置零、厚置备置零、Thin Provision三个的区别
  15. [译文]优雅的现代JavaScript设计模式: 冰冻工厂
  16. SEO优化的四个建议
  17. 3GPP TS EPC与5GC相关协议
  18. 苹果A13芯片细节曝光,大幅提升AI性能
  19. 自己写一个RTOS系统
  20. 新必应(new bing)申请

热门文章

  1. WebConfig自定义节点并读取
  2. HL7 ADT Message Sample
  3. mysql的replace()函数介绍【mysql函数】
  4. SAD立体匹配算法在opencv中的实现
  5. Python学习之路:NumPy初识
  6. 十一课堂|通过小游戏学习Ethereum DApps编程(4)
  7. python学习笔记-5.18
  8. 9月7日学习内容整理:内置函数
  9. 美参议员敦促SEC就雅虎黑客案信息披露义务展开调查
  10. 电子商务系统的设计与实现(十二):技术选型