0

コンパイラに付属しているプリプロセッサではなく、boost.waveをプリプロセッサとして使用しようとしています。私はこれを達成する方法を理解することができません。

ビルドシステムジェネレーターとしてCMakeを使用していますが、プリプロセッサーがboost.waveであることを指定するにはどうすればよいですか。これは、Windows(MSVC)とLinux(gcc)の両方で機能するはずです。

スタックオーバーフローアーカイブをグーグルで検索しても答えは得られませんでした


コンパイラはとにかくファイルを前処理します。したがって、ここでは2つの前処理ステップが含まれているように見えます。

4

1 に答える 1

2

これは2段階のプロセスです。

まず、カスタムコマンドとしてWaveを使用するようにCMakeに指示する必要があります。CMakeのを使用しますadd_custom_command。このコマンドを定義すると、カスタムコマンドに指定した依存関係が一致するたびに呼び出されます。

次に、事前定義されたすべてのマクロと、コンパイラが通常使用する(システム)インクルードパスを把握する必要があります。Waveは特定のコンパイラについて何も知りません。したがって、特定のコンパイラに対してファイルを適切に前処理するには、すべての(関連する)事前定義マクロ(通常はコンパイラによって事前定義されます)およびすべてのシステムインクルードパス(通常はデフォルトでコンパイラに認識されます)を呼び出し中に渡す必要があります波。これらすべてのオプションをWaveのコマンドラインに配置するのが面倒な場合(おそらくそうです)、Waveのオプションファイルを作成できます(コマンドラインに追加します@cfgfile)。MSVC2005の例を次に示します。

-SC:\Program Files (x86)\Microsoft Visual Studio 8\VC\include
-SC:\Program Files (x86)\Microsoft Visual Studio 8\VC\PlatformSDK\Include
-D_MT
-D_MSC_VER=1400
-D_MSC_FULL_VER=140050727
-D_MSC_EXTENSIONS
-D_M_IX86

確かに、ここでWaveの他のオプションを追加することもできます。コンパイラごとに異なる構成ファイルを使用すると、CMake内からの管理が容易になります。

于 2010-12-10T13:46:13.653 に答える