从Jam迁移到CMake

cpp*_*guy 5 cross-platform cmake jam bjam

我理解Jam构建现有项目,CMake生成要构建的项目.但是,鉴于我宁愿生成可以在各种IDE中使用的项目,而不是尝试将Jam集成到那些IDE中,有没有人有任何经验/成功将Jamfile转换为CMakeLists.txt文件?

Ran*_*ook 5

我曾经在所有Linux项目中使用Jam,因为它比普通的makefile更容易.然后我发现了CMake,并没有回去.编写Jamfiles就像编写Jamfiles一样容易编写CMakeLists.txt文件,并且您可以免费获得特定于平台的IDE支持,尽管IMO IDE项目并不像手工生成的那样干净.

从我所看到的,尽管有很多优点,但现在很少有人使用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.cppadd_library(helper STATIC helper.cpp helper.h)
  • SubDir foo ;add_subdirectory(foo)
  • LinkLibraries HelloWorld : libhelper ;target_link_libraries(HelloWorld helper)

CMake生成的IDE项目不会自动包含相关的头文件,因此我在上面的示例中明确包含了重要的头文件.如果你还没有看到它,这里有一个很好的例子.


cpp*_*guy 0

所以我最终决定最好的办法是从头开始一个 CMAKE 项目。我们的 Jam 项目太乱了,我不想继承意大利面条构建的残渣。

我发现这些资源最有帮助

http://www.cmake.org/Wiki/CMake_Useful_Variables http://www.cmake.org/cmake/help/v2.8.10/cmake.html