Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cross platform 从Jam迁移到CMake_Cross Platform_Cmake_Bjam_Jam - Fatal编程技术网

Cross platform 从Jam迁移到CMake

Cross platform 从Jam迁移到CMake,cross-platform,cmake,bjam,jam,Cross Platform,Cmake,Bjam,Jam,我了解Jam构建现有项目,CMake生成要构建的项目。但是,考虑到我更愿意生成可以在各种IDE中使用的项目,而不是尝试将Jam集成到这些IDE中,有没有人有过将Jam文件转换成CMakeLists.txt文件的经验/成功经验?我以前在所有Linux项目中都使用Jam,因为它比常规的makefiles更容易。然后我发现了CMake,并没有回去。编写CMakeLists.txt文件和编写Jamfiles一样简单,而且您可以免费获得特定于平台的IDE支持,尽管在我看来,IDE项目没有手工生成的项目那么

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

我以前在所有Linux项目中都使用Jam,因为它比常规的makefiles更容易。然后我发现了CMake,并没有回去。编写CMakeLists.txt文件和编写Jamfiles一样简单,而且您可以免费获得特定于平台的IDE支持,尽管在我看来,IDE项目没有手工生成的项目那么干净

据我所见,现在很少有人使用果酱,尽管果酱有很多优点。它确实声称能够在各种平台上构建,但与此同时,它似乎不再享受积极的开发,因此我倾向于不相信它的多平台声明

据我所知,目前还没有自动将JAMK文件的层次结构转换为CMakeLists.txt文件的层次结构的工具,尽管这样的工具肯定是一个可行的项目。然而,由于Jam的不受欢迎,在较小程度上,CMake,除非你或我找到一些空闲时间,否则这样的工具不会出现(

如果您的项目不太复杂,一些简单的搜索和替换操作应该可以将jamkelists.txt文件转换为CMakeLists.txt文件。如果您的项目很复杂,那么手动转换它们可能是最佳选择

一些简单的转换:

  • HDRS+=a.hb.hc.h;
    变成
    include\u目录(a.hb.hc.h)
  • Main HelloWorld:Main.cpp utils.cpp;
    变成
    add\u可执行文件(HelloWorld Main.cpp utils.cpp utils.h)
  • Library helper:helper.cpp
    变为
    add\u库(helper STATIC helper.cpp helper.h)
  • 子目录foo;
    变成
    添加子目录(foo)
  • LinkLibraries-HelloWorld:libhelper;
    变成
    target\u-link\u库(HelloWorld-helper)

CMake生成的IDE项目不会自动包含相关的头文件,因此我在上面的示例中明确地包含了一些重要的头文件。如果您还没有看到,那么有一个很好的示例。

对于Jam到CMake的转换,尝试扩展vcproj2cmake来实现Jam解析器可能也很有用(CMake syntax text streams的生成器部分现在已经相当强大了)。

因此,我最终决定最好的办法是从头开始CMake项目。我们的Jam项目太乱了,我不想把我们意大利面构建的粗枝大叶遗留下来

我发现这些资源非常有用