当前位置: 首页 > news >正文

CMake笔记:Alias Target在哪些地方可以使用

1. 问题描述

以下命令为目标hello增加别名My::Name::Hello

add_executable(hello main.cpp)
add_executable( My::Name::Hello ALIAS hello)

开始在install中使用,
install( My::Name::Hello RUNTIME DESTINATION bin)

出现错误:
CMake Error at src/hello/CMakeLists.txt:8 (install):
install TARGETS given target “My::Name::Hello” which is an alias.

查看cmake文档:

Creates an Alias Target, such that can be used to refer to
in subsequent commands. The does not appear in the
generated buildsystem as a make target.

此句中的generated buildsystem是代码什么,install命令属于generated buildsystem中的吗?

2. generated buildsystem

generated buildsystem 具体指什么

generated buildsystem 指由 构建生成器(如CMake)输出的底层构建系统文件,例如:

  • Makefile(Unix环境)
  • build.ninja (Ninja构建系统)
  • Visual Studio的.vcxproj文件
    这些文件由CMake根据CMakeLists.txt 动态生成,而非用户手动编写。

当定义别名目标(add_executable( ALIAS ))时:
不会出现在生成的Makefile或build.ninja中,它仅是CMake层面的逻辑引用,用于简化脚本编写

3. install 的生成机制

install()命令在CMake配置阶段被解析
其规则会被写入生成的构建系统文件(如Makefile中的install目标)
执行make install时调用的是生成系统中的规则

CMake (元构建系统)
↓ 生成
Makefile/Ninja (具体构建系统)
↓ 执行
编译/安装操作

Alias Target停留在元构建层(CMake作用域)
Install目标下沉到具体构建层(Make/Ninja作用域)

4. 总结

generated buildsystem 指由CMake生成的底层构建文件(如Makefile),Alias Target不会写入此层,仅在CMake抽象层有效。
install命令会显式写入生成的构建系统,通过make install触发,属于构建系统的可执行目标。
两者根本区别在于:

  • Alias Target是配置期的逻辑抽象
  • Install是构建期的物理操作
http://www.lryc.cn/news/620912.html

相关文章:

  • 使用Docker安装MeiliSearch搜索引擎
  • 【完整源码+数据集+部署教程】柠檬质量检测系统源码和数据集:改进yolo11-DBBNCSPELAN
  • nginx入门需知(含安装教程)
  • 知识的本质
  • 【MATLAB技巧】已知平面上的一些点,拟合得到一个圆的例程,给出最小二乘与非线性迭代两种解法,附下载链接
  • Swift 数据类型全景解析(基础到高阶)
  • Gradle(四)Maven 项目迁移 Gradle 项目实践
  • [激光原理与应用-274]:理论 - 波动光学 - 光是电磁波,无线电磁波可以通过天线接收和发送,为什么可见光不可以?
  • 滑动窗口题目:定长子串中元音的最大数目
  • 【读代码】开源流式语音编码器SecoustiCodec
  • MySQL的索引(索引的创建和设计原则):
  • python自学笔记8 二维和三维可视化
  • 业务敏捷性对SAP驱动型企业意味着什么?如何保持企业敏捷性?
  • 网络通信全过程:sk_buff的关键作用
  • ⭐CVPR2025 3D 高斯探测视觉基础模型3D能力
  • Mybatis学习笔记(五)
  • 3D-R1、Scene-R1、SpaceR论文解读
  • 区块链 + 域名Web3时代域名投资的新风口(上)
  • CTFSHOW | nodejs题解 web334 - web344
  • 一颗TTS语音芯片给产品增加智能语音播报能力
  • 关于RSA和AES加密
  • vue+后端
  • vue3使用leaflet地图
  • 最新去水印小程序系统 前端+后端全套源码 多套模版 免授权(源码下载)
  • 跨域及解决方案
  • python+vue扫盲
  • langchain入门笔记03:使用fastapi部署本地大模型后端接口,优化局域网内的问答响应速度
  • Room 数据存储
  • AI 赋能:从智能编码提速到金融行业革新的实践之路
  • 机器翻译:Hugging Face库详解