web-dev-qa-db-ja.com

cmakeでマクロの定義を追加する方法は?

C++アプリケーションでMongodbクライアントとBoostを使用しています。 MongodbクライアントはまだBoost古いファイルシステムを使用しており、私のC++アプリケーションはboost 1.47.0のファイルシステムバージョン3を使用しているため、競合します。

このコンパイルの問題を解決する方法を見つけました。つまり、私のcppファイルのBoostからのヘッダーファイルのすべてのincludeステートメントの前にマクロ定義を追加します。

#define BOOST_FILESYSTEM_VERSION 2

しかし、上記のマクロの定義をCMakeプロジェクトファイルに挿入する方法を知りたいです。

33
Dean Chen

add_definitions を見てください。これにより、コンパイラのコマンドラインに定義が追加されます。 -D gcc付き、または/D MSVCを使用。次のようなものを試してください:

add_definitions( -DBOOST_FILESYSTEM_VERSION=2 )

あなたの場合、私は間違いなくadd_definitionメソッドですが、別の方法として configure_file を確認することもできます。次に、ヘッダーファイルテンプレートを作成できます。これには、cmake値が入力され、これをソースファイルに含めます。これは、CMakeによって決定される多数の構成可能なパラメーターがある場合に役立ちます。

51
André