2012-04-10 125 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的语法文本流是相当能干现在)。