Jamが既存のプロジェクトをビルドし、CMakeがビルドするプロジェクトを生成することを理解しています。しかし、JamをそれらのIDEに統合しようとするのではなく、さまざまなIDEで使用できるプロジェクトを生成したいので、JamfileをCMakeLists.txtファイルに変換した経験/成功はありますか?
3 に答える
通常のmakefileよりも簡単だったので、以前はすべてのLinuxプロジェクトでJamを使用していました。その後、CMakeを発見しましたが、戻っていません。CMakeLists.txtファイルの作成はJamfileの作成と同じくらい簡単で、プラットフォーム固有のIDEサポートを無料で利用できますが、IMOIDEプロジェクトは手動で生成されたものほどクリーンではありません。
私が見たところ、Jamの多くの長所にもかかわらず、最近はJamを使用する人はほとんどいません。さまざまなプラットフォームで構築できると主張していますが、同時に活発な開発を楽しんでいないようで、マルチプラットフォームの主張を信用しない傾向があります。
私の知る限り、Jamfilesの階層をCMakeLists.txtファイルの階層に自動的に変換するツールはありませんが、そのようなツールは確かに実行可能なプロジェクトです。ただし、Jamの不人気と、それほどではないがCMakeのおかげで、あなたや私が自由な時間を見つけない限り、そのようなツールは視野に入っていません。:(
プロジェクトがそれほど複雑でない場合は、いくつかの単純な検索および置換操作で、JamfileをCMakeLists.txtファイルに変換する必要があります。プロジェクトが複雑な場合は、手作業で変換するのがおそらく最善の策です。
いくつかの単純な変換:
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)
Library helper : helper.cpp
になりますadd_library(helper STATIC helper.cpp helper.h)
SubDir foo ;
になりますadd_subdirectory(foo)
LinkLibraries HelloWorld : libhelper ;
になりますtarget_link_libraries(HelloWorld helper)
CMakeが生成するIDEプロジェクトには、関連するヘッダーファイルが自動的に含まれないため、上記の例に重要なものを明示的に含めました。まだご覧になっていない場合は、ここに良い例があります。
Jam から CMake への変換の場合、vcproj2cmake を拡張して Jam パーサーの実装も試してみると便利な場合があります (CMake 構文テキスト ストリームのジェネレーター部分は現在かなり機能しています)。
そのため、CMAKE プロジェクトをゼロから開始するのが最善であると最終的に判断しました。私たちの Jam プロジェクトはめちゃくちゃでした。
これらのリソースが最も役立つことがわかりました
http://www.cmake.org/Wiki/CMake_Useful_Variables http://www.cmake.org/cmake/help/v2.8.10/cmake.html