CMakeList.txt使用指南

2023-05-16

cmake_minimum_required

设置所需的最低cmake版本
cmake_minimum_required(VERSION major[.minor[.patch[.tweak]]]
[FATAL_ERROR])

execute_process

执行一个或多个子进程
execute_process(COMMAND <cmd1> [args1…]]
[COMMAND <cmd2> [args2…] […]]
[WORKING_DIRECTORY <directory>]
[TIMEOUT <seconds>]
[RESULT_VARIABLE <variable>]
[OUTPUT_VARIABLE <variable>]
[ERROR_VARIABLE <variable>]
[INPUT_FILE <file>]
[OUTPUT_FILE <file>]
[ERROR_FILE <file>]
[OUTPUT_QUIET]
[ERROR_QUIET]
[OUTPUT_STRIP_TRAILING_WHITESPACE]
[ERROR_STRIP_TRAILING_WHITESPACE])

COMMEND

子进程的命令行

WORKING_DIRECTORY

被指定的目录将被设置为子进程的当前工作目录

WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}

当前正被处理的源目录的路径

TIMEOUT

如果子进程没有在指定的时间内完成将会被终止

OUTPUT_VARIABLE

所命名的变量将与标准输出和标准误差管道的内容分别被设置。

project

设置一个名称,版本,和整个项目所用的语言。
project(<PROJECT-NAME> [LANGUAGES] […])
project(<PROJECT-NAME>
[VERSION <major>[.<minor>[.<patch>[.<tweak>]]]]
[LANGUAGES <language-name>…])

message

给用户显示一条消息
message([<mode>] “message to display” …)

Set

为某个变量设置某个值
set(<variable> <value>
[[CACHE <type> <docstring> [FORCE]] | PARENT_SCOPE])

CMAKE_CXX_EXTENSIONS

对CXX_EXTENSIONS属性的默认值,它是一个布尔型变量,用来指定是否请求编译器的扩展设置OFF 或者 ON

set(CMAKE_CXX_STANDARD 11)

使其包含c++11特性,等同于g++时的-std=c++11

set(CMAKE_C_STANDARD 11)

同理,包含c 11特性

set(CMAKE_SYSTEM_NAME linux64)

设置系统名称

set(POSITION_INDEPENDENT_CODE ON/OFF)

确定位置独立的可执行文件或共享库中是否将被创建。

Set(EXECUTABLE_OUTPUT_PATH)

设置可执行文件路径位置,后续有设置会被覆盖

${PROJECT_BINARY_DIR}

该项目的顶层目录,完整路径。

OUT_API_FOLDER /build/linux64/release/

发布版本

${LIBRARY_OUTPUT_PATH}

库文件目录,如果后续有设置会被覆盖。

Optione

规定一个用户可以选择的选项
option(<option_variable> “help string describing option”
[initial value])

Include

加载和从文件或模块运行CMake;的代码
include(<file|module> [OPTIONAL] [RESULT_VARIABLE ]
[NO_POLICY_SCOPE])
Load and run CMake code from a file or module.

link_directories

根据目录中的链接寻找库
link_directories(directory1 directory2 …)

include_directories

为build添加include路径
include_directories([AFTER|BEFORE] [SYSTEM] dir1 [dir2 …])

Message

显示一条消息给用户
message([<mode>] “message to display” …)
(none) = Important information
STATUS = Incidental information
WARNING = CMake Warning, continue processing
AUTHOR_WARNING = CMake Warning (dev), continue processing
SEND_ERROR = CMake Error, continue processing,
but skip generation
FATAL_ERROR = CMake Error, stop processing and generation
DEPRECATION = CMake Deprecation Error or Warning if variable
CMAKE_ERROR_DEPRECATED or CMAKE_WARN_DEPRECATED
is enabled, respectively, else no message.
STREQUAL:字符串比较

add_definitions

使用指定的源文件将库添加到项目中
add_library(<name> [STATIC | SHARED | MODULE]
[EXCLUDE_FROM_ALL]
source1 [source2 …])

link_libraries

将指定库添加到项目。
add_library(<name> [STATIC | SHARED | MODULE]
[EXCLUDE_FROM_ALL]
source1 [source2 …])

SET(CMAKE_BUILD_TYPE "Debug"or”Release”)

设置编译版本

set_target_properties

设置目标属性,该命令的语法是列出所有你要改变的文件,然后提供你要设置下一个值。
set_target_properties(target1 target2 …
PROPERTIES prop1 value1
prop2 value2 …)

target_link_libraries

为一个目标或其依赖建立库
target_link_libraries(<target> … <item>… …)

add_executable

使用指定的文件为项目添加可执行程序。
add_executable( [WIN32] [MACOSX_BUNDLE]
[EXCLUDE_FROM_ALL]
source1 [source2 …])

target_link_libraries

连接一个给定的目标时,指定库或标志使用。
target_link_libraries(<target> [item1 [item2 […]]]
[[debug|optimized|general] <item>] …)

install

install(TARGETS targets… [EXPORT <export-name>]
[[ARCHIVE|LIBRARY|RUNTIME|FRAMEWORK|BUNDLE|
PRIVATE_HEADER|PUBLIC_HEADER|RESOURCE]
[DESTINATION <dir>]
[INCLUDES DESTINATION [<dir> …]]
[PERMISSIONS permissions…]
[CONFIGURATIONS [Debug|Release|…]]
[COMPONENT <component>]
[OPTIONAL] [NAMELINK_ONLY|NAMELINK_SKIP]
] […])

附:cmake3.7 index地址:https://cmake.org/cmake/help/v3.7/genindex.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CMakeList.txt使用指南 的相关文章

  • px4的CMakelists.txt阅读

    Copyright c 2017 PX4 Development Team All rights reserved Redistribution and use in source and binary forms with or with
  • python保存虚拟环境requirement.txt

    保存 pip freeze span class token operator gt span requirement txt 安装 pip span class token function install span r requirem
  • CLion 生成CMakeList文件和include文件不存在问题

    今天导入在Clion上导入了一个其他开发环境下开发的项目 xff0c 虽然能看得到代码 xff0c 但是也只能看得到代码了 xff0c 想要代码跳转 xff0c 查看声明啥的都看不了 xff0c 编写错误也不会提示 xff0c 也不能编译执
  • CMakeLists.txt ----find_package

    在linux平台下编译程序的时候通常都会使用到CMakeLists txt来制定编译规则 在查找需要链接的lib时候 通常会使用到find package 记录一下我之前用到的地方 find package 之后 最好到FindXXX cm
  • CMakeLists.txt----一点儿自己的经验教训

    被CMakeLists txt坑过数次 xff08 大多是被自己蠢哭 xff09 xff0c 把用过的命令稍微记一下 注意 xff1a 中文空格等什么诡异字符 xff0c 链接库的名字不要忘记 xff0c 不要写错 好记性不如烂键盘 xff
  • 关于ROS包中CMakeList.txt中几个常用的命令的作用 ——————(一)

    目录 xff08 1 xff09 find package catkin REQUIRED COMPONENTS 2 include directories 3 add executable src1 src2 xff08 简易写法 xff
  • C++工程的CMakeLists.txt文件编写

    最简单的demo工程如下 xff1a include lt iostream gt include lt string gt int main int argc char argv std cout lt lt 34 hello world
  • cmake, make, CMakeLists.txt, Makefile简介

    文章目录 cmake make CMakeList txt Makefile之间的关系参考文章链接 xff1a 转自个人博客 在各种开源项目中 xff0c 经常会发现项目中除了代码源文件 xff0c 还包含了 CMakeList txt M
  • python open按行读取txt 去掉\n

    加 strip 39 n 39
  • CMakeList 中引用系统环境变量中的 include 文件,以及 lib 文件

    CMakeList 中引用系统环境变量中的 include 文件 xff0c 以及 lib 文件 cmake中对环境变量读写都是通过ENV前缀来访问环境变量 ENV ZLIB DIR 表示系统环境变量ZLIB DIR 所表示的路径 以ZLI
  • signature=8544f8b053d71af57dc8d660a85d9730,VIPqiangjian.txt

    E03E57EB8BBCA651CA328471425F6AD0E00BA528AC66F8D93F965C7D2D23A3B430533B0D8637A1FC156333BAEC82986AEFA71FF8B13664AD40742674
  • CMakeList

    目录 1 简介 2 常用命令 2 1 指定 cmake 的最小版本 2 2 设置项目名称 2 3 设置编译类型 2 4 指定编译包含的源文件 2 4 1 明确指定包含哪些源文件 2 4 2 搜索所有的 cpp 文件 2 4 3自定义搜索规则
  • qt程序的CMakeLists.txt配置转为平台的qt的.pro项目工程文件

    参考这个 跨平台qt程序的CMakeLists txt配置转为平台的qt的 pro项目工程文件 谁能懂我2011的博客 CSDN博客 一些比较正规的跨平台qt项目没有 pro项目文件只有CMakeLists txt文件 xff0c 如果要编
  • CMakeLists.txt 构建 Qt工程

    源码路径下包括 xff1a main cpp test cpp test h test ui test qrc cmake minimum required VERSION 3 1 0 project test SET CMAKE INCL
  • 从零学习GCC,Makefile,CMakeList编译

    近期想系统地学习一下C 43 43 软件开发 xff0c 因此记录一下自己的学习笔记 xff0c 方便复习 大多数内容都是整理搬运别的博主文章内容 xff0c 加上自己的理解归纳 如果大家想了解更深的内容或者有不明白的地方 xff0c 可以
  • iperf3 使用指南

    iperf3的参数 xff1a s表示做服务器 c表示做客户端 t 表示表示发送时间 i 表示间隔多久报告一次 u 表示UDP xff0c 不加表示tcp R 表示服务器发客户端收 xff0c 不加默认客户端发 xff0c 服务器收 f 表
  • python 两个小技巧将字典写入txt或者json 文件

    1 不用 json 包 先来看一个 Python 的奇淫技巧 i 61 100 s1 61 str i 这样输出的不会是 100 xff0c 毫不疑问 但是 s1 61 43 str i 43 这样输出的结果 61 str i 于是看这一条
  • QLExpression学习使用教程

    文章目录 QLExpress 简介 支持特性 Maven引入 例子github源码 图分解 提示 例子 初次使用 Runner执行器设置 执行器执行命令的设置 支持普通的Java语法执行 运算符支持 运算符分类 示例 部分运算符列举 样例使
  • Windows从命令行创建文本文件的两种方式

    第一种方式 copy con 文件名 然后可以输入文件内容 完成后打Ctrl Z退出 输入的内容被保存为一个文件 第二种 如下 echo gt 文件名 创建一个空的文件 当然你可以创建任何后缀名的文本类文件 创建一个SQL文件也是没问题的
  • 使用powershell从txt文件中提取带有两个分隔符的列

    我有一个sample txt 文件 Processing Cl Cog u l Cg txt V DM Nv AL Ft He Se Fe Bt L Ey 0 Ct Cu3 我需要将此文件分成 4 个不同的列 并在之前添加新列 输出 csv

随机推荐

  • 如何实现Qt上位机软件串口的按字节数据处理?

    1 Qt串口类的选择 最近在做一个小项目 xff0c 需要用到Qt做上位机软件 xff0c 本人也是边学边做 xff0c 买了本 QtCreator快速入门 看了看就动手了 xff0c 由于初学不是很了解Qt5的官方资源 xff0c 一开始
  • 如何使用HAL库手动修改OSC引脚为PD0/1?

    CubeMX不能直接重映射OSC引脚为PD0 1 xff0c 那么 xff0c 如何使用HAL库手动修改OSC引脚为PD0 1 如下图所示配置即可 xff1a
  • “野火FreeRTOS教程”第7章补充知识点-异常流程

    一 知识点 1 Cortex M3 4在复位后CONTROL寄存器初始值为0 xff0c 也就是说MCU会处于线程模式 具有特权访问权限且使用主栈指针 MSP 2 当进入异常时CM3会自动入栈 xff0c 如下图所示 xff1a 3 当异常
  • mini四旋翼飞行器DIY日志

    一 方案 功能描述 xff1a 具备mini四旋翼飞行器的基本功能 xff0c 可以拓展其他模块实现定高 对航向角yaw的校准 xff0c 将所有io引出并设计出最小系统板子功能 xff0c 将设计I2C总线挂载选择电路便于调试和使用 可以
  • Quartus II 13.1.0.162三件套安装包

    QuartusSetup 13 1 0 162 链接 https pan baidu com s 1B01zWG76kfNcGLA0VmwyMw 提取码 jjdd ModelSimSetup 13 1 0 162 链接 https pan
  • DSP Builder安装时的注意事项

    注意事项1 DSP Builder是以组件的形式安装在altera下面的 xff0c 并且altera要与matlab 32位 xff01 xff01 安装在同一路径下 xff0c 这个路径不要带有中文 xff0c 或者空格字符 xff0c
  • Maven3.6.1下载与配置,超详细

    Maven3 6 1下载与配置 xff0c 超详细Maven3 6 1下载与配置 xff0c 超详细Maven3 6 1下载与配置 xff0c 超详细 Maven下载与配置 1 官网下载对应版本 xff0c 推荐下载免安装版 下载地址 ht
  • 【GIS】GIS矢量空间分析(上)

    0 GIS的基本概念 栅格数据与矢量数据 上图中 xff0c a为图形模拟表示的地理对象 xff0c b为控件对象对应的栅格数据模型表示 xff0c c为对应的矢量数据模型表示 矢量模型的表达源于原型空间实体本身 xff0c 通常以坐标来定
  • ROS简介-从零开始讲解ROS(适合超零基础阅读)

    1 前言 笔者以前是机械专业 xff0c 对于计算机方面的学习是少之又少 xff0c 接触机器人的学习之后 xff0c 比如路径规划 算法等 xff0c 发现很难入门 xff0c 不过慢慢摸爬滚打之后还是有了一些认识 xff0c 俗话说的好
  • C++primer plus第六版课后编程练习答案14.1

    include lt iostream gt include lt string gt using namespace std template lt class T1 class T2 gt class Pair private T1 a
  • 区块链——脱坑truffle

    使用truffle构建一个智能合约 实现输出 helloworld 的功能 网上有很多帖子 但也有很多坑 这里展示我的搭建过程 帮助大家绕过那些麻烦 一 安装web3 solc truffle npm g install solc npm
  • ucosii消息队列使用

    ucosii消息队列简介 ucosii的消息队列源码定义在os q c文件 xff1b 接口全部声明在ucos ii h xff0c 总共有如下接口 xff1a span class token keyword void span span
  • rtthrea-ucosii-freertos三系统学习总结

    三系统基本功能对比 RT thread ucosii freertos 任务调度 抢占式 时间片式 xff08 多级队列位图调度 xff09 抢占式 xff08 纯位图调度 xff09 抢占式 时间片式 xff08 遍历列表调度 xff09
  • VScode的git安装与配置

    git下载与安装 1 在官网下载git的最新版本 2 按照提示一步步安装完成 具体步骤参看以下文章 xff1a 转https blog csdn net qq 40342589 article details 105676715 VScod
  • 将python代码封装成c版本的dll动态链接库

    前言 将python程序打包成DLL文件 xff0c 然后用C 43 43 调用生成的DLL文件 xff0c 这是一种用C 43 43 调用python的方法 xff0c 这一块比较容易遇到坑 网上关于这一块的教程不是很多 xff0c 而且
  • gazebo加载异常或者加载缓慢

    在我们安装完ros的时候会在命令行里运行gazebo命令会打开gazebo一个空白世界 xff0c 往往会卡在如图所示的界面 xff1a 这是模型文件加载缓慢需要很长时间 xff0c 这是在ubuntu16 04下的情况 xff0c 在ub
  • FreeRTOS学习笔记二【源码文件介绍及命名规范】

    FreeRTOS学习笔记二 源码文件介绍及命名规范 源码文件介绍源码中的命名规范两个重要数据类型变量名函数名宏名 参考 本文介绍源码中的命名规范 xff0c 下篇开始介绍FreeRTOS中的任务管理 源码文件介绍 Free RTOS源码中包
  • FreeRTOS学习笔记八【队列-下】

    FreeRTOS学习笔记八 队列 下 队列中传输大数据 一个包 或大小可变的数据传输大数据传输不同类型和长度的数据 从多个队列中获取数据队列集合xQueueCreateSet xQueueAddToSet xQueueSelectFromS
  • 软件mongodbmanager.exe 在打开数据库Collection时报错

    The GuidRepresentation for the reader is CSharpLegacy which requires the binary sub type to be UuidLegacy not UuidStanda
  • CMakeList.txt使用指南

    cmake minimum required 设置所需的最低cmake版本 cmake minimum required VERSION major minor patch tweak FATAL ERROR execute process