当前位置: 首页 > 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.dtcms.com/a/331912.html

相关文章:

  • 傅里叶变换+attention机制,深耕深度学习领域
  • shellgpt
  • Linux计划任务
  • 当GitHub宕机时,我们如何协作?
  • nginx入门需知(含安装教程)
  • OpenCV图像注册模块
  • Spring 三级缓存三个小问题记录
  • linux常见文件系统+用户管理+常见故障
  • Redis面试精讲 Day 21:Redis缓存穿透、击穿、雪崩解决方案
  • 纸箱拆垛:物流自动化中的“开箱密码”与3D视觉的智能革命
  • JavaScript方法借用技术详解
  • 【软件安装|1】CentOS7最新可用国内 yum 镜像源配置和Linux版MySQL8.0安装及其相关知识
  • 6、C 语言指针初阶知识点总结
  • 金融新政激活工业“智脑”,鸿道操作系统筑基新型工业化
  • 70亿参数让机器人“开窍“:英伟达Cosmos Reason如何让AI理解物理世界
  • 批量标准化、模型的保存和加载
  • 20道DOM相关前端面试题
  • CLAM复现问题记录
  • flutter3.7.12版本设置TextField的contextMenuBuilder的文字颜色
  • 水印消失术!JavaAI深度学习去水印技术深度剖析
  • 在启智平台使用A100对文心开源大模型Ernie4.5 0.3B微调(失败)
  • vector 认识及使用
  • Docker 入门与实战:从环境搭建到项目部署
  • Java构造器与工厂模式(静态工程方法)详解
  • 20道JavaScript相关前端面试题及答案
  • 2025.8.24复习总结
  • WAF 与 SIEM 联动:攻击事件的实时告警与溯源分析流程
  • 3D-R1、Scene-R1、SpaceR论文解读
  • C#:TryGetValue
  • C语言零基础第16讲:内存函数