2016-05-13 12 views
-1

私はブーストライブラリを使用できるプロジェクトを持っており、それを使用することもできません。 私はプロジェクトに追加できるプロパティシートuse_boostを持っていて、追加パスと値I_AM_USING_BOOST<PreprocessorDefinitions>タグを設定しています。私のようなもの持っているコードでプロジェクトのビルド(ブーストの有無にかかわらず)

#ifdef I_AM_USING_BOOST 
    #include <boost/any.hpp> 
#else 
    #include <string> 
#endif 


namespace test 
{ 


#ifdef I_AM_USING_BOOST 
    using my_defined_type = boost::any; 
#else 
    using my_defined_type = std::string; 
#endif 


} 

を私はブーストでビルドをしたくないのであれば、私は、プロパティシートを削除します。 私がboostでビルドしたい場合は、プロパティシートをプロジェクトに追加します。

ここでは、ライブラリの両方のバリエーションを作成したいと思います.1つはブーストを使用し、もう1つはブーストを使用しません。

2つの異なるビルドを持つ単一のプロジェクトを作成することができます:ブーストとブーストは1つではありませんが、プロパティシートを手動で追加または削除しないでください。

バッチファイルからmsbuildを使用してビルドします。

+2

:バッチで

違いではなく、プロジェクトファイルのパラメータとしてソリューションファイルを与えているということです。どのようにこのタイプを後で使用していますか? 'std :: string'と' boost :: any'を使うと非常に異なったパターンを使います。 – SergeyA

+3

はい、プロジェクトに2つの異なるターゲットを作成し、各ターゲットのプロパティを設定できます。 –

+0

また、 '/ p: = ' – Wurmloch

答えて

0

私の解決策として、新しいプロジェクト構成(Release_no_boost)を追加しました。その構成では、ブーストライブラリを使用してプロパティシートを削除しました。

バッチファイルでは、異なる構成を呼び出すことで両方のバリエーションに対してmsbuildを実行できるようになりました。 私はバッチファイルに今持っている:

msbuild /t:rebuild /p:Configuration=Release D:\projects\some_test\test_1\test_1.vcxproj 
msbuild /t:rebuild /p:Configuration=Release_no_boost D:\projects\some_test\test_1\test_1.vcxproj 

これは、複数のプロジェクトとソリューションのために使用することができますが、構築されて溶液中のソリューション構成を作成し、各プロジェクトのためにする必要がある、それを必要なプロジェクト構成が設定されます。私は、次のではないのです

msbuild /t:rebuild /p:Configuration=Release D:\projects\some_test\some_test.sln 
msbuild /t:rebuild /p:Configuration=Release_no_boost D:\projects\some_test\some_test.sln 
関連する問題