6

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

4

3 回答 3

5

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

据我所知,尽管 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 项目不会自动包含相关的头文件,因此我在上面的示例中明确包含了重要的头文件。这里有一个很好的例子,如果你还没有看过的话。

于 2012-04-15T18:07:23.387 回答
1

对于 Jam 到 CMake 的转换,尝试扩展 vcproj2cmake 以实现 Jam 解析器也可能很有用(CMake 语法文本流的生成器部分现在相当强大)。

于 2012-07-20T18:50:35.753 回答
0

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

我发现这些资源最有帮助

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

于 2013-02-20T18:37:13.003 回答