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

最佳答案

我以前在所有Linux项目中都使用Jam,因为它比常规的makefile更容易。然后,我发现了CMake,但没有回来。编写CMakeLists.txt文件和编写Jamfile一样容易,而且您可以免费获得特定于平台的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.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,这是一个很好的示例。

    关于cross-platform - 从Jam迁移到CMake,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10096391/

    10-13 03:26