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

如何用CMake实现类似Python的命名空间式C++头文件引用?

用CMake实现类似Python包的C++命名空间式头文件引用

Python中的包命名空间示例

Python的模块(或包)为其他模块提供命名空间,示例目录结构如下:

package
├── core
│   ├── core.py
│   └── __init__.py
├── extensions
│   ├── extensions.py
│   └── __init__.py
├── __init__.py
└── utils
    ├── __init__.py
    └── utils.py

要导入core.py,可执行以下代码:

from package.core import core

(假设package已在PYTHONPATH中),这种导入方式可以避免命名冲突。

C++中的实现需求

希望通过CMake实现类似Python的命名空间引用效果,让C++代码能够以如下方式引用头文件:

#include <package/core/core.hpp>

目标目录结构

package
├── CMakeLists.txt
├── core
│   ├── CMakeLists.txt
│   ├── core.cpp
│   └── core.hpp
├── extensions
│   ├── CMakeLists.txt
│   ├── extensions.cpp
│   └── extensions.hpp
└── utils
    ├── CMakeLists.txt
    ├── utils.cpp
    └── utils.hpp

额外限制条件

  • 每个子目录必须拥有独立的CMakeLists.txt
  • 根目录的CMakeLists.txt无需知晓具体的头文件或源文件信息
  • 不使用target_include_directories指令,因为该指令会将整个目录加入编译器搜索路径,导致IDE(如CLion)显示无关文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 09:07:12