以下を考えると:
- 何千もの C++ ソース ファイルを含む大規模なプロジェクト
- 共通ヘッダー ファイルなし (すべてのソース ファイルに含まれるヘッダーは 1 つもありません)
- 上記のプロジェクトはg ++でコンパイルされ、makeによって管理されます
すべてのソース ファイルを変更して新しいヘッダー ファイルをインクルードすることなく、定義 (マクロなど) をすべてのコンパイル ユニットにインクルードする方法はありますか?
man gcc から:
-インクルードファイル
「#include "file"」がプライマリ ソース ファイルの最初の行として表示されているかのようにファイルを処理します。ただし、ファイルを検索する最初のディレクトリは、メイン ソース ファイルを含むディレクトリではなく、プリプロセッサの作業ディレクトリです。そこに見つからない場合は、通常どおり「#include "..."」検索チェーンの残りの部分で検索されます。複数の -include オプションを指定すると、ファイルはコマンド ラインに表示される順序でインクルードされます。
これは、"-D" gcc コマンド ライン オプションで実行できます。
例:gcc -ansi -Wall -Dblah='mymacrohere()' blah.cpp