web-dev-qa-db-ja.com

コマンドラインオプションを使用してヘッダーファイルを含めますか?

(GCC 4/C++を使用して)コマンドラインから含める追加のヘッダーファイルを指定することは可能ですか?

または、#include以外でファイルをインクルードできる他の方法はありますか?

背景:私は自分のPCで大きなコードベースをコンパイルしようとしています。通常、コードはクラスターでコンパイルされ、複雑なビルドシステム(SoftRelToolsだれでも?)がオペレーティングシステムと絡み合っているため、他の場所(文字通り何百ものmakefileとシェルスクリプト、およびハードネットワークドライブへのコード化されたパス)。ただし、実際のコードはかなり単純で、コンパイルは問題ありませんが、多くのインクルードが欠落しています(ほとんどが「include <vector> "および" include <math.h> ")。通常、ビルドシステムがこれを処理していると思いますが、コードを調べて手動でインクルードを追加する必要があります。

65
jdm

I found -includeオプション。これはあなたが望むものですか?

-includeファイル

「#include "file"」がプライマリソースファイルの最初の行として表示されるかのようにファイルを処理します。ただし、ファイルを検索する最初のディレクトリは、メインソースファイルを含むディレクトリではなく、プリプロセッサの作業ディレクトリです。そこで見つからない場合は、通常どおり「#include "..."」検索チェーンの残りの部分で検索されます。

複数の-includeオプションが指定されている場合、ファイルはコマンドラインに表示される順序で含まれます。

73
foraidt

Gccマニュアルから:

-includeファイル

#include "file" "は、プライマリソースファイルの最初の行として表示されます。ただし、ファイルを検索する最初のディレクトリは、メインソースファイルを含むディレクトリではなく、プリプロセッサの作業ディレクトリです。 「#include "..." "検索チェーンは通常どおり。

複数の-includeオプションが指定されている場合、ファイルはコマンドラインに表示される順序で含まれます。

25

Gccのドキュメントによると、コマンドラインスイッチの「-include file」がジョブを実行します。

9
tibur