2012-04-10 9 views
5

Jamは既存のプロジェクトをビルドすることを理解し、CMakeはビルドするプロジェクトを生成します。しかし、JamをIDEに統合しようとするのではなく、様々なIDEで使うことができるプロジェクトを生成したいと思っていますが、誰かがJamfileをCMakeLists.txtファイルに変換する経験や成功はありますか?JamからCMakeに移行

答えて

4

通常のメイクファイルよりも簡単だったので、私はすべてのLinuxプロジェクトにJamを使用していました。私はその後、CMakeを発見し、戻っていない。 CMakeLists.txtファイルはJamfilesを書くのと同じくらい簡単ですが、プラットフォーム固有のIDEサポートを無料で入手できますが、IMOのIDEプロジェクトは手作業で作成されたものほどきれいではありません。

私が見たことから、その多くの強みにもかかわらず、最近ほとんどの人がジャムを使用しています。それはさまざまなプラットフォームで構築できると主張していますが、それと同時に、積極的な開発を楽しんでいるようには見えないので、私はそのマルチプラットフォームの主張を不信に思う傾向があります。

私が知る限り、Jamfilesの階層を自動的にCMakeLists.txtファイルの階層に変換するツールはありませんが、このようなツールは確かに実現可能なプロジェクトです。しかし、Jamの非公式性のおかげで、あなたや私が自由な時間を見つけることができない限り、CMakeは、そのようなツールは、地平線にはありません。 :(

プロジェクトがあまりにも複雑でない場合は、いくつかの簡単な検索と置換操作は、CMakeLists.txtファイルへのJamfileを変換する必要があります。プロジェクトが複雑な場合は、手でそれらを変換すると、おそらくあなたの最善の策である。

いくつかの単純な変換:

  • HDRS += a.h b.h c.h ;include_directories(a.h b.h c.h)
  • Main HelloWorld : main.cpp utils.cpp ;なりadd_executable(HelloWorld main.cpp utils.cpp utils.h)
  • になりますはadd_library(helper STATIC helper.cpp helper.h)
  • SubDir foo ;なりadd_subdirectory(foo)
  • LinkLibraries HelloWorld : libhelper ;はcmakeのは、それゆえ私は、明示的に上記の例では、重要なものを含め、自動的に関連するヘッダファイルが含まれていません生成target_link_libraries(HelloWorld helper)

IDEのプロジェクトになりますとなります。まだ見たことがない場合は、hereという素晴らしい例があります。

1

Jam to CMake変換では、vcproj2cmakeを拡張してJamパーサの実装を試みると便利です(CMake構文のストリームのジェネレータ部分は現在かなり機能しています)。