CMake 教程3

简介: CMake 教程

CMake 教程2:https://developer.aliyun.com/article/1597129


target_link_options

target_link_options — CMake 3.24.0-rc3 Documentation

# 为可执行文件、共享库或模块库目标的链接步骤添加选项。
 
target_link_options(<target> [BEFORE]
  <INTERFACE|PUBLIC|PRIVATE> [items1...]
  [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])

target_precompile_headers

target_precompile_headers — CMake 3.24.0-rc3 Documentation

# 添加要预编译的头文件列表。
 
# 预编译头文件可以通过创建一些头文件的部分处理版本,然后在编译期间使用该版本而不是重复解析原始头文件来加速编译。
 
# 主要用法  Main Form
target_precompile_headers(<target>
  <INTERFACE|PUBLIC|PRIVATE> [header1...]
  [<INTERFACE|PUBLIC|PRIVATE> [header2...] ...])
 
 
# 重用预编译头  Reusing Precompile Headers
# 该命令还支持第二个签名,可用于指定一个目标重用来自另一个目标的预编译头文件工件,而不是生成自己的:
 
target_precompile_headers(<target> REUSE_FROM <other_target>)

target_sources

target_sources — CMake 3.24.0-rc3 Documentation

# 将源代码添加到目标。
 
target_sources(<target>
  <INTERFACE|PUBLIC|PRIVATE> [items1...]
  [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])
 
 
# 文件集
target_sources(<target>
  [<INTERFACE|PUBLIC|PRIVATE>
   [FILE_SET <set> [TYPE <type>] [BASE_DIRS <dirs>...] [FILES <files>...]]...
  ]...)


try_compile

try_run

CTest 命令(CTest Commands)

ctest_build

ctest_configure

ctest_coverage

ctest_empty_binary_directory

ctest_memcheck

ctest_read_custom_files

ctest_run_script

ctest_sleep

ctest_start

ctest_submit

ctest_test

ctest_update

ctest_upload

cmake-env-variables

cmake 环境变量

改变行为的环境变量

控制构建的环境变量

语言环境变量

CTest 的环境变量

CMake curses 接口的环境变量

cmake-generator-expressions

在构建系统生成期间使用生成器评估表达式以生成特定于每个构建配置的信息

$<BOOL:string>
$<AND:conditions>
$<OR:conditions>
$<NOT:condition>

cmake-generators

生成原生系统的编辑文件,如windows的vcxproj,linux的makefile

命令行构建工具生成器

Makefile Generators

Ninja Generators

Ninja首页、文档和下载 - 小而快的构建系统 - OSCHINA - 中文开源技术交流社区

Ninja 是 Google 的一名程序员推出的注重速度的构建工具,一般在 Unix/Linux 上的程序通过 make/makefile 来构建编译,而 Ninja 通过将编译任务并行组织,大大提高了构建速度。Ninja 的目标是成为汇编程序。

IDE 构建工具生成器

Visual Studio Generators

Other Generators

额外的生成器


cmake-language

cmake 语言。讲述其组织、目录结构、脚本、模块、语法、编码、命令调用等


cmake-modules

此处列出的模块是 CMake 发行版的一部分。项目可能提供更多模块,它们的位置可以由CMAKE_MODULE_PATH指定。

实用模块

这些模块使用include()命令进行加载

查找模块

这些模块用来搜索第三方软件。它们通常通过find_package()命令进行使用


cmake-packages

包含使用包,包的结构,创建包,注册包

find_package(Qt4 4.7.0 REQUIRED) # CMake provides a Qt4 find-module
find_package(Qt5Core 5.1.0 REQUIRED) # Qt provides a Qt5 package config file.
find_package(LibXml2 REQUIRED) # Use pkg-config via the LibXml2 find-module

cmake-policies  策略

cmake-presets  与人共享

cmake-properties  属性

cmake-qt  qt cmake

cmake-toolchains

cmake-toolchains(7) — CMake 3.24.0-rc3 Documentation

设置编译工具链

# 一个典型的 Linux 交叉编译工具链包含以下内容:
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)
 
set(CMAKE_SYSROOT /home/devel/rasp-pi-rootfs)
set(CMAKE_STAGING_PREFIX /home/devel/stage)
 
set(tools /home/devel/gcc-4.7-linaro-rpi-gnueabihf)
set(CMAKE_C_COMPILER ${tools}/bin/arm-linux-gnueabihf-gcc)
set(CMAKE_CXX_COMPILER ${tools}/bin/arm-linux-gnueabihf-g++)
 
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

cmake-variables

cmake-variables(7) — CMake 3.24.0-rc3 Documentation



目录
相关文章
|
JavaScript
【Vue面试题十五】、说说你对slot的理解?slot使用场景有哪些?
这篇文章深入探讨了Vue中的`slot`概念,包括它的定义、使用场景和分类(默认插槽、具名插槽和作用域插槽),并通过代码示例展示了如何在组件中使用插槽来实现内容的分发和自定义。同时,文章还对插槽的工作原理进行了分析,解释了`renderSlot`函数和`$scopedSlots`对象的角色。
【Vue面试题十五】、说说你对slot的理解?slot使用场景有哪些?
|
机器学习/深度学习 人工智能 PyTorch
阿里云GPU云服务器怎么样?产品优势、应用场景介绍与最新活动价格参考
阿里云GPU云服务器怎么样?阿里云GPU结合了GPU计算力与CPU计算力,主要应用于于深度学习、科学计算、图形可视化、视频处理多种应用场景,本文为您详细介绍阿里云GPU云服务器产品优势、应用场景以及最新活动价格。
阿里云GPU云服务器怎么样?产品优势、应用场景介绍与最新活动价格参考
|
存储 机器学习/深度学习 并行计算
Pytorch NCHW/NHWC 的理解
Pytorch NCHW/NHWC 的理解
1045 1
|
SQL 关系型数据库 数据库
在 Postgres 中使用 Exists
【8月更文挑战第11天】
459 0
|
数据采集 监控 供应链
shopee商品列表数据接口丨关键词搜索shopee商品数据采集
shopee商品列表数据接口丨关键词搜索shopee商品数据采集
|
存储 编译器 开发工具
面向 C++ 的现代 CMake 教程(三)(2)
面向 C++ 的现代 CMake 教程(三)
453 0
|
测试技术 API UED
【Qt 应用开发 】初步理解 Qt窗口中的模态性应用
【Qt 应用开发 】初步理解 Qt窗口中的模态性应用
493 1
|
NoSQL Unix Linux
Linux下gdb调试生成core文件并调试core文件
Linux下gdb调试生成core文件并调试core文件
2870 1
Linux下gdb调试生成core文件并调试core文件
|
算法 程序员 Android开发
Android-MediaPlayer(2)加进度条和时间显示
Android-MediaPlayer(2)加进度条和时间显示
542 0
Android-MediaPlayer(2)加进度条和时间显示