私はこの問題に何度か遭遇しましたが、経験豊富な 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;
}
mylib.h
さらに、 に配置する代わりに/usr/include/mylib/
、ディレクトリを選択する Linux ディストリビューションがあるとし/usr/include/mylib2/mylib/
ます。したがって、簡単なコマンドは次のとおりです。
$ gcc test.c
エラーで失敗します:
fatal error: mylib.h: No such file or directory
しかし、次のように記述して、include ステートメントを修正しようとするかもしれません。
#include <mylib2/mylib.h>
これにより、最初のエラーを回避できます。ただし、内部的にmylib.h
は、「通常の」方法で他のヘッダー ファイルを参照します: #include <mylib/anotherheader.h>
. #include <mylib2/mylib/mylib.h>
そのため、MWE の元の include ステートメントを修正した後でも、mylib.h
が#include <mylib/anotherheader.h>
代わりに#include <mylib2/mylib/anotherheader.h>
.
この問題を回避する標準的な方法は何ですか? 私が見逃している単純なコンパイルフラグが必要です。前もって感謝します。