C++アプリケーションでMongodbクライアントとBoostを使用しています。 MongodbクライアントはまだBoost古いファイルシステムを使用しており、私のC++アプリケーションはboost 1.47.0のファイルシステムバージョン3を使用しているため、競合します。
このコンパイルの問題を解決する方法を見つけました。つまり、私のcppファイルのBoostからのヘッダーファイルのすべてのincludeステートメントの前にマクロ定義を追加します。
#define BOOST_FILESYSTEM_VERSION 2
しかし、上記のマクロの定義をCMakeプロジェクトファイルに挿入する方法を知りたいです。
add_definitions を見てください。これにより、コンパイラのコマンドラインに定義が追加されます。 -D
gcc付き、または/D
MSVCを使用。次のようなものを試してください:
add_definitions( -DBOOST_FILESYSTEM_VERSION=2 )
あなたの場合、私は間違いなくadd_definition
メソッドですが、別の方法として configure_file を確認することもできます。次に、ヘッダーファイルテンプレートを作成できます。これには、cmake値が入力され、これをソースファイルに含めます。これは、CMakeによって決定される多数の構成可能なパラメーターがある場合に役立ちます。