You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CMake如何将嵌套目录的头文件直接安装至include根目录?

解决CMake安装头文件时移除子目录的问题

核心解决方案

要将bar/barexample.h直接安装到<someprefix>/include目录(而非<someprefix>/include/bar),同时保留sample.h的安装路径,你需要在src/CMakeLists.txt中直接指定头文件的安装目标,而非依赖默认的目录结构传递。以下是两种可行方法:

方法1:逐个指定头文件安装路径

直接使用install(FILES)指令,明确每个头文件的最终安装位置:

# 将sample.h安装到include根目录
install(FILES sample.h DESTINATION include)

# 将bar目录下的barexample.h直接安装到include根目录,忽略原bar子目录结构
install(FILES bar/barexample.h DESTINATION include)

方法2:批量处理+单独指定子目录文件

如果src目录下有多个根目录头文件,可先批量安装,再单独处理子目录中的目标文件:

# 安装src目录下所有.h文件到include根目录(自动排除bar子目录)
install(DIRECTORY . DESTINATION include
        FILES_MATCHING PATTERN "*.h"
        PATTERN "bar" EXCLUDE)

# 单独将bar目录下的barexample.h安装到include根目录
install(FILES bar/barexample.h DESTINATION include)

为什么之前的指令无效?

  • target_include_directories:仅用于指定编译阶段的头文件搜索路径,完全不影响安装时的文件结构。
  • target_sources:仅将文件添加到编译目标中,不控制文件的安装路径和结构。

内容的提问来源于stack exchange,提问作者dodo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 16:50:58