add_compile_options()

增加源文件的编译选项。

add_compile_options(<option> ...)

为当前路径和下层路径的目标增加编译器命令行选项,选项在此命令被调用后添加。查看文档中关于路径和目标的 COMPILE_OPTIONS 属性。

这个命令可以被用来添加任何的选项,但是存在替代命令(target_compile_definitions() 和 add_definitions())增加预处理定义或(target_include_directories() 和 include_directories())包含路径。

add_compile_options的参数可以使用带语法$<...>的“生成表达式”。关于有效的表达式可以查看cmake-generator-expressions(7)手册。关于更多的系统属性的定义可以查看cmake-buildsystem(7)助手。

add_definitions()

为源文件的编译添加由-D定义的标志。

add_definitions(-DFOO -DBAR ...)

为当前路径以及下层路径的目标加入编译器命令行定义(定义在命令调用之前或之后被添加,注:也就是不确定)。这个命令可以用来添加任何标志,但是它的原意是用来增加预处理器的定义(查看 add_compile_options() 命令增加其它的定义)。那些以 -D 或 /D 开头的标志,看起来像预处理器定义的flag,会被自动加到当前路径的 COMPILE_DEFINITIONS 属性中。为了后向兼容,非简单值(non-trival,指的是什么?——译注)的定义会被留在flags组(flags set)里,而不会被转换。关于在特定的域以及配置中增加预处理器的定义,参考路径、目标以及源文件的 COMPILE_DEFINITIONS 属性来获取更多的细节。

target_compile_definitions()

为目标增加编译定义。

target_compile_definitions(<target><INTERFACE|PUBLIC|PRIVATE> [items1...][<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])

编译给定的 <target> 时使用指定的编译定义。<target> 必须是 add_executable() 或者 add_library() 创建的,并且不是一个输入目标。

关键字INTERFACE,PUBLIC和PRIVATE用来指定其后参数的作用域。PRIVATE 和 PUBLIC 项将产生 <target> 的 COMPILE_DEFINITIONS 属性。PUBLIC 和 INTERFACE 项将产生 <target> 的INTERFACE_COMPILE_DEFINITIONS 属性。其后的参数指定编译定义。重复调用相同的目标将按照调用顺序追加(定义)。

target_compile_definitions的参数可以使用带语法$<...>的“生成表达式”。

build_command()

获取构建该工程的命令行。通常是供CTest模块的内部使用。

注:笔者给出了一个简单的例子在文档结尾。

build_command(<variable>[CONFIGURATION <config>][TARGET <target>][PROJECT_NAME <projname&gt] # legacy, causes warning)

实例

cmake_minimum_required(VERSION 2.8)
project(cmaketest)
#set(CMAKE_CXX_COMPILER "g++")
add_compile_options(-std=c++11 -w)
#add_definitions(-std=c++11)build_command(BUILD_COMMAND_LINE CONFIGURATION ${CMAKE_BUILD_TYPE}
PROJECT_NAME cmaketest TARGET all)message("build command:${BUILD_COMMAND_LINE}")message("using compiler ${CMAKE_CXX_COMPILER}")add_executable(test main.cpp)

build command:/usr/bin/make -i "all"

using compiler /usr/bin/c++

// main.cppint main(int argc, char *argv[])
{int n = 5.5f;auto func = [&](int n) {return n < 5;};return 0;
}

cmake CMakeLists.txt 命令 add_compile_options、add_definitions、target_compile_definitions、build_command相关推荐

  1. Cmake + CMakeLists.txt 编译SO库(JNI编译)

    cmake android-ndk google demo- https://github.com/googlesamples/android-ndk 在Android Studio中使用C/C++库 ...

  2. cmake,CMakeLists.txt,make,makefile的关系

    cmake的作用:生成makefile的工具.读入源文件之后,自动生成makefile CMakeLists.txt的作用:告诉cmake,如何生成makefile makefile的作用:设置编译规 ...

  3. 用于创建此对象的程序是package_【ROS 学习笔记】CMakeLists.txt 与 package.xml

    0. 前言 在 ROS 中,节点的编写语言通常只有 C++ 和 Python,C++ 需要编译后才能运行,Python 则无需编译. 我们知道 Linux 平台编译 C++ 文件,需要编译器和链接器, ...

  4. cmake 编译文件 CMakeLists.txt 语法介绍与实例演练

    一.Cmake 简介 cmake 是一个跨平台.开源的构建系统.它是一个集软件构建.测试.打包于一身的软件.它使用与平台和编译器独立的配置文件来对软件编译过程进行控制. 二.常用命令 1. 指定 cm ...

  5. Ubuntu下使用cmake结合CmakeLists.txt生成makefile文件并进行编译

    转自1:https://www.cnblogs.com/cv-pr/p/6206921.html 转自2:https://blog.csdn.net/qqwangfan/article/details ...

  6. 【CMAKE系列】cmake中CMakeLists.txt脚本的常用语法

    在不同的平台编译的时候,会用到一些系统内置的变量,比如操作系统名称,版本号之类: CMAKE_SYSTEM:系統全名,如 "Linux-2.4.22″,"FreeBSD-5.4-R ...

  7. 【CMake】CMakeLists.txt的超傻瓜手把手教程(附实例源码)

    新手写CMakeLists.txt简直就是实力劝退,各种命令让很多人头大,如何写一个最基础的CMakeLists.txt呢?本文从一个实例出发,教你编写的基本流程. CMakeLists.txt的基本 ...

  8. 【转载】CMake 语法 - 详解 CMakeLists.txt

    作者:红橙Darren 链接:https://www.jianshu.com/p/528eeb266f83 来源:简书 目录 1. 初试 cmake 的 helloworld 2. 构建生成 .so ...

  9. “cmake 点点”表示在上一级目录(CMakeLists.txt所在目录)编译

    CMake学习(一)_福尔摩斯帅双的博客-CSDN博客 在 linux 平台下使用 CMake 生成 Makefile 并编译的流程如下: 编写 CMake 配置文件 CMakeLists.txt . ...

最新文章

  1. 《Python数据科学指南》——1.17 使用映射函数
  2. swift开源项目精选
  3. python mysql connector update_Python(Mysql Connector)如何刷新curs上的结果
  4. 详解DNS的常用记录(上):DNS系列之二
  5. 【Linux】一步一步学Linux——batch命令(134)
  6. CodeForces - 1295B Infinite Prefixes(数学)
  7. ROS2学习(四).ROS 2 核心概念
  8. 【案例】图片无缝轮播效果
  9. 盘一盘常见的6种索引失效情况
  10. JavaScript学习(八十)—请写一段JS程序提取URL中的各个get参数(参数名和参数个数不确定),将其按key-value形式返回到一个json结构中
  11. 003——数组(三)count()reset()end()prev()next()current()
  12. 大数据全样而非抽样原理_干货 | 大数据思维的十大核心原理(二)
  13. 《GPU编程与CG语言之阳春白雪下里巴人》阅读笔记 第三章+第四章
  14. flea-cache使用之Memcached接入
  15. 推荐一款word转pdf超好用的包:aspose-words(解决中文乱码)
  16. PTA习题【python】 7-5 特立独行的幸福
  17. ply文件 java_ply之解析java文件,找出包名、类名、依赖类
  18. 基于springboot开发的停车场管理系统-计算机毕业设计
  19. 用函数调用的方式实现汽车移动的例子 (python)
  20. Gitlab安装使用及汉化配置

热门文章

  1. 设计模式 — 创建型模式 — 工厂模式
  2. 5G NR — 基础知识
  3. FD.io/VPP — VPP 的安装部署
  4. Go 语言编程 — Overview
  5. 算法笔记1-最大子序列和问题的求解
  6. GoogleReader的Likes操作数据如何获取?
  7. 项目经理的超越(一)你超越了吗?
  8. “国家使命”图书第一批权威发布
  9. 一个操作系统组成部分
  10. svn自动同步更新脚本(windows)