2

前処理された出力を取得するには、次のコマンドを使用します。

g++ -E a.cpp > temp.cpp

a.cppファイルが#include同じフォルダーにない場合は、次を使用します。

g++ -I <directory> -E a.cpp > temp.cpp

.cpp現在、前処理された出力が必要なファイルがいくつかあります。
また、#includeすべての .cpp ファイルとヘッダー ファイルに対する大きな依存関係が、いくつかの異なるサブディレクトリに分散されています。したがって、次のオプションは非常に面倒です。

g++ -I <dir1> -I <dir2> -I <dir3> ... -E a.cpp > temp.cpp

もっと簡単な方法はありますか (できれば を使用しないでMakefileください) ? (単一のディレクトリの下にある
と仮定します)dir1, dir2, ...

4

2 に答える 2

2

-I前処理とコンパイルには同じ のセットが必要です。

実際にコードをコンパイルするときは、必ずいくつかの-Iパラメーターのセットを使用します (おそらく make ファイルによって生成されます)。
したがって、同じものを使用するだけです(またはコンパイルして、-Iパラメーターをコピーして貼り付けます)。

私が見る唯一の代替手段は、ヘッダーディレクトリを再構築して共通ディレクトリに配置することです(サブディレクトリを使用して、を使用#include <subdir/header.h>)。
しかし、これははるかに手間がかかります (努力する価値はあるかもしれませんが)。

于 2012-05-17T06:42:06.720 に答える
0

1 つの方法は、すべてのサブディレクトリが存在する TOP ディレクトリを指定することです。この方法では、多くの -I を指定する必要はありません。しかし、これはそれを遅くします。

于 2012-05-17T06:06:29.273 に答える