可能重复:
如何将目录添加到 C 标头包含路径?
我已经多次遇到这个问题,我认为最好从有经验的 C 或 C++ 程序员那里得到解释。在下面的示例中,我使用了示例库名称,但实际名称可以是任何名称。
假设我想运行以下 MWE:
#include <stdio.h>
#include <mylib/mylib.h> /* Also try mylib2/mylib/mylib.h */
int main (int argc, char **argv) {
printf ("Hello, World!\n");
return 0;
}
此外,假设我有一个 Linux 发行版,而不是放在mylib.h
中,而是/usr/include/mylib/
选择目录/usr/include/mylib2/mylib/
。所以简单的命令:
$ gcc test.c
会因错误而失败:
fatal error: mylib.h: No such file or directory
但我可能会尝试通过编写以下内容来修复包含语句:
#include <mylib2/mylib.h>
这让我克服了第一个错误。但在内部,mylib.h
以“通常”的方式引用其他头文件: #include <mylib/anotherheader.h>
. 所以现在,即使我已经修复了 MWE 中的原始包含语句,#include <mylib2/mylib/mylib.h>
因为构建中断,因为mylib.h
它试图包含#include <mylib/anotherheader.h>
而不是#include <mylib2/mylib/anotherheader.h>
.
解决这个问题的标准方法是什么?必须有一个我缺少的简单编译标志。先感谢您。