gpt4 book ai didi

c - 使#include "foo/bar.h"实际上得到 "foo/inc/bar.h"

转载 作者:太空宇宙 更新时间:2023-11-04 01:23:52 25 4
gpt4 key购买 nike

如果我的项目结构如下:

project/
module-X/
inc/
x.h
src/
x.c
module-Y/
inc/
y.h
src/
y.c
module-Z/
inc/
z.h
src/
z.cpp

我有 CFLAGS += -I$(PROJECT_ROOT_DIR)

有什么方法可以让我写 #include "module-X/x.h" 而不是 #include "module-X/inc/x.h" ?我想在 #include 中使用 module-X 以获得显式命名空间,但 inc/ 部分只是噪音。

我的解决方案都有缺陷:

  • 将 header 移动到根 module-X/ 目录

    • 将 header 与其他需要存在的东西(例如 makefile)混合在一起,这些东西可能不像 header 那样公开。
  • 保留源码在module-X/inc/module-X/x.h,添加module-X/inc包含路径

    • 需要将每个模块都添加到 CFLAGS,不能很好地扩展。
  • 重组项目,使 header 位于 project/inc/module-*/

    • 模块不再是独立的。

我还缺少其他选项吗?

(代码需要用 gcc、clang 和 msvc 编译)

最佳答案

bash 解决方案可以吗?

在目录 project...

mkdir includes
for module in module-*
do
ln -s "${module}/inc" "includes/${module}"
done

然后将project/includes 添加到包含路径。

类似的事情可以用 CMake、DOS 批处理等来完成。

关于c - 使#include "foo/bar.h"实际上得到 "foo/inc/bar.h",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35363527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com