2011-12-19 11 views
1

実際には、Windows/Linuxプラットフォームで、Java、Pascal(Delphi/FPC)、C++、C#などの異なる言語のバイナリをビルドする必要があります。非Cプロジェクトのクロスプラットフォーム自動ビルド

これはどのように行うことができますか?私は今のようにCMake for Cプロジェクトを使っています:

cmake --build .CMakeLists.txt providenです。

+0

クロスプラットフォームのビルドとアプリケーションの作成は複雑なテーマです。もっと具体的な質問がありますか? –

+0

はい。どのように私はjava/pascal/delphi/c#ファイルをコンパイルするためにCMakeを設定できますか?私は持っているソースごとにカスタムの 'CMakeLists.txt'ファイルを作成できます。 – shybovycha

+0

深刻なJavaプロジェクトには、Ant、Maven、Gradleまたは他のビルドツールをベースにしたビルド手順が必要です。私はcmakeで構築されたJavaプロジェクトを見たことがありません。それは仕事のための正しいツールではありません。また、Javaバイナリは本質的にクロスプラットフォームです。 WindowsでビルドしてLinuxで実行できます。 –

答えて

3

すべて*makeシステムは、Javaプロジェクトのために便利されていない例の一つに*.o.a,.dll,.exe)。これらの「プリミティブ」により、ビルドが実行されます。

しかし、Javaコンパイラは、本質的に "完全なソースツリー、アウトクラスツリーアウト"を必要とします。

これら2つのパラダイムが一致していないとしようとすると、遅かれ早かれその価値よりも少し厄介な問題が導入されます。そこに行って、それをしてください。

最善の方法は、トップレベルのMakefileからAntまたはMaven(または何でも)を呼び出すことです。

編集:2つの以上の事を忘れない:make

  • コンパイルのJavaのものが暗く、難解な芸術です。 Javaとmakeの両方を知っていて、その組み合わせで問題を解決することができる多くの人が見つかりません。 Ant/MavenとJavaは標準の組み合わせです。その組み合わせでヘルプやアドバイスを見つけるだけで問題はありません。

  • Javaの多くのフレームワークでは、特別なコンパイル手順が必要です。ほとんどの場合、AntとMaven用のプラグインが利用可能です。 makeを使うと、毎回ホイールを再開発する必要があります。

+0

FreePascal/Delphiにも同じ問題があります。コンパイラー呼び出しは、ビルドイン依存関係リゾルバーを使用して数百のファイルをコンパイルすることができます。メインプログラムまたはリーフモジュールの名前を渡すかどうかに応じて、コンパイラー呼び出しが1つだけです。 –

+0

@AH「ダーク・アーケイン・アート」の叙事詩!それでもJavaアプリケーション内からMicrosoftコンパイラを実行する必要があります。そして、それは私がほぼ3日間修正することができないトラブルを引き起こします。あなたはなにか考えはありますか? (質問自体の最後のコメントを参照してください) – shybovycha

+2

@shybovycha:Javaアプリケーション内からMSコンパイラを使用することは、この質問とは関係ありません。別の新しい質問をする必要があります。 –

1

無料Pascalは独自のビルドシステムを提供しています。例えば、

http://www.stack.nl/~marcov/buildfaq.pdf

(主にgmakeを生成メイクファイルに基づいて)デフォルトのmakefileは、すでに交差可能です。

私はFree Pascalでcmakeを使用する人は誰も知りません。私は10年以上メイラリストにいました。 makeは基本的に「における一つのファイル、うち一つのファイル」(例えば.oから.c)または「中Nファイル、うち一つのファイル」(のいずれかを想定しているので、

関連する問題