c++ - 如何使编译器仅搜索包含目录中的特定文件并排除该特定目录中的其余文件

标签 c++ linux makefile include

<分区>

让我举例说明我的问题。假设我有两个目录,dir1 和 dir2。这些目录中的每一个目录中都有两个文件:dir1/fileA.h 和 dir1/fileB.h。 dir2 将有同名文件 dir2/fileA.h & dir2/fileB.h,但它们的内容与 dir1 中的不同。如果我想使用 dir1/fileA.h & dir2/fileB.h,就会出现问题。如果我先包含 dir1 然后再包含 dir2

           INCLUDE_DIRS += \ dir1 \

                             dir2

然后编译器将仅引用 dir1 中的 fileA.h 和 fileB.h,而忽略 dir2 中的文件,反之亦然,如果我将 dir2 放在 dir1 之前。同样,是否有任何解决方案可以使编译器在 dir1 中查找 fileA.h 而在 dir2 中查找 fileB.h?

最佳答案

不,没有。但是假设您的 dir1dir2 有一个共同的基本目录 root,例如

   dir1 = the-root/path1
   dir2 = the-root/path2

然后,使用 -Ithe-root 作为 Makefile 中的编译选项

   target: source.c
         gcc -Ithe-root source.c ...

并包含在您的 C 文件中:

   #include "path1/fileA.h"
   #include "path2/fileA.h"

或者任何你喜欢的。

关于c++ - 如何使编译器仅搜索包含目录中的特定文件并排除该特定目录中的其余文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47195542/

相关文章:

php - 如何在带有 php 的 ubuntu 服务器上使用 Ghostscript 将 .docx 文件转换为 pdf

c++ - mmap 只适用于小文件?

c - 尽管进行了更改,为什么 Makefile 认为它是最新的?

makefile - Make 表示 "missing separator"来自 CuTest 的源 .c 文件

linux - 使用 iptables 阻止从主机到主机的 ping(我是无线接入点)

c++ - 从作为模板函数参数传递的 std::function 推断返回和参数类型?

c++ - C++中的字符串、字符比较

c++ - vector 重新分配导致 malloc 错误

parallel-processing - 如何强制某组目标始终按顺序运行?

c++ - 需要调用没有对象的非静态方法