2012-04-10 82 views
5

我瞭解果醬建立現有項目和CMake生成項目建立。但是,由於我寧願生成項目,我可以在各種IDE中使用,而不是試圖將Jam集成到這些IDE中,有沒有人有任何經驗/成功將Jamfile轉換爲CMakeLists.txt文件?從果醬移植到CMake

回答

4

因爲它比普通的makefile更容易,所以我以前對所有Linux項目都使用Jam。然後我發現了CMake並沒有回去。編寫CMakeLists.txt文件與編寫Jamfiles一樣容易,並且您可以免費獲得特定於平臺的IDE支持,但IMO IDE項目不像手動生成的那樣乾淨。

從我所看到的,很少有人用果醬這些天,儘管有諸多優勢。它聲稱能夠在各種平臺上構建,但與此同時,它似乎不再享受積極的發展,所以我傾向於不相信它的多平臺聲明。

據我所知,有一個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項目。有一個很好的例子here,如果你還沒有看到它。

1

果醬向CMake的轉換,這可能是有益的嘗試延長vcproj2cmake有果醬解析器的實現,太(發電機部分的CMake的語法文本流是相當能幹現在)。