2011-02-07 7 views
2

WindowsとUNIXの両方のクロスプラットフォームアプリケーションを簡単にコンパイルするためのさまざまなソリューションについては疑問があります。WindowsとUnixベースのシステムでコンパイルするためのコードベースを準備する方法

私はUbuntuでメイクファイルを使用していますが、コードベースが大きくなる前に、Windowsでコンパイルするのに必要な手順を実行しています。

私はSVNコードベースリポジトリにVC++ソリューションなどの複数の "makefile"ソリューションを混入させない方がよいでしょう。私はWindows用のmakeでmingwを使ってみましたが、私のsecondexpansion awesomenessはWindows版(またはそのようなもの)では動作しないようです。それはコンパイルされず、また定義されていない_winNTなどについても不平を言います。

クロスプラットフォームの簡単なコンパイルのためにコードベースをどのように準備すればよいですか? buildtoolsのようなものは、おそらくmakefileからVSファイルを自動生成するか、それと似たようなものです。おそらく、stdincファイル内のいくつかのプリプロセッサの魔法?

ありがとうございます!

答えて

6

CMakeを指摘します。これは、MySQL、KDE、Compizなどのハイプロファイルプロジェクトで使用されています。

UnixベースのプラットフォームのMakefilesやWindowsのVisual C++プロジェクトやソリューションファイルなど、ターゲットシステムのネイティブビルドファイルを生成する機能があります。

プラットフォームの違いに対応するために、私はこのテーマに関する私の以前の記事を参照することを勧めます:C++: Platform dependent types - best pattern

+0

ありがとうございます!私はCMakeを良く使うか悪い方を使うようにしました。私がVC++を使うとき、それは仕事のようなものです。しかし、コンパイラにMinGWを選択しても機能しません。_win32が定義されていないと不平を言います。私はこれをCMakeが処理してはいけないのですか? OS依存のCMake設定を追加するにはどうすればいいですか?助けてくれてありがとう! – Max

+0

エラーが発生する場所を正確に指定する必要があります。私はこの種の問題を一度も経験していないので、あなたのコードでは問題ではないかと思います。サンプルのCMakeLists.txtファイルについては、http://code.google.com/p/flvmeta/source/browse/#svn%2Ftrunkをご覧ください。 – SirDarius

+0

ありがとう、私はそれが働くようになった。最初はセットアップに少し面倒でしたが、今はうまくいきます! – Max

0

私はブーストビルドのために行くだろう:http://www.boost.org/doc/tools/build/doc/html/index.html

あなたはからプラットフォームとコンパイラを選択することができますコマンドライン(Windowsのdosコマンドプロンプト)とそれ以外はすべて動作します。

例えば

bjam release gcc, 

または

bjam debug msvc 

あなたは(あなたがそう望むなら)各コンパイラのための余分なフラグを追加したり、異なるバージョンのコンパイラことができます。

+0

記録のために、Boostプロジェクトでさえ、[CMakeへの切り替え](https://svn.boost.org/trac/boost/wiki/CMake)を調べているので、Boost-Jamを全面的にお勧めしませんその光。 – greyfade

関連する問題