3

/ my / path / to/fileフォルダーにヘッダーファイルがほとんどありません。これらのファイルを新しいCプログラムにインクルードする方法は知っていますが、インクルードする前にヘッダーファイルへのフルパスを入力する必要があるたびに。Linuxでパス変数を設定して、ヘッダーファイルを自動的に検索することはできますか?

4

3 に答える 3

5

メイクファイルを作成できます。最小限の例は次のとおりです。

INC_PATH=/my/path/to/file
CFLAGS=-I$(INC_PATH)

all:
    gcc $(CFLAGS) -o prog src1.c src2.c

ここから、さまざまな方法でこの makefile を改善できます。おそらく最も重要なのは、コンパイルの依存関係を示すことです (したがって、変更されたファイルのみが再コンパイルされます)。

参考までに、ここにGNU make documentationへのリンクがあります。

makefile を使用したくない場合は、いつでも環境変数を設定して、コンパイル コマンドを入力しやすくすることができます。

export MY_INC_PATH=/my/path/to/file

次に、次のようにプログラムをコンパイルできます。

gcc -I${MY_INC_PATH} -o prog src1.c src2.c ...

MY_INC_PATHfile.bashrcで変数を定義するか、変数定義を含む便利な場所にファイルを作成することをお勧めします。source次に、現在のシェルでその変数を設定するために使用できます。

source env.sh

ただし、メイクファイルを使用する方がはるかに好ましい方法だと思います。

于 2012-07-17T10:03:14.347 に答える
3

同様の質問があり、おそらくより適切に解決されます(永続的な解決策に興味がある場合):https://stackoverflow.com/a/558819/1408096

C_INCLUDE_PATH (C ヘッダー ファイルの場合) またはCPLUS_INCLUDE_PATH (C++ ヘッダー ファイルの場合)を設定してみてください。

称賛:jcrossley3

于 2014-11-26T17:48:48.030 に答える
0

私は今 Linux を使っていないので、すべてが正しいかどうかを確認するために再起動するのは面倒ですが、シンボリック リンクを作成してみましたか? たとえば、Ubuntu を使用している場合:

$ cd /usr/include
$ sudo ln -s /my/path/to/file mystuff

したがって、stufを含めたい場合は、次を使用できます。

#include <mystuff/SpamFlavours.h>
于 2012-07-17T10:08:13.647 に答える