3

我是 Node9 的作者,这是一个托管的混合操作系统,它结合了 Inferno 和 LuaJIT 来创建一个交互式的分布式开发环境。在此处查看项目:https ://github.com/jvburnes/node9

我创建了一个基本的 4.x premake 脚本来编译 OSX 的所有依赖项和主要源代码,但现在人们要求为 Linux、BSD 和 Windows 构建配置。我有执行此操作的代码,并且我想创建预制配置以在这些操作系统上构建和运行 Node9。我需要设置库并包含搜索路径、编译器名称以及每个平台的定义。

  1. 谁能指点我一个好的多平台预制脚本?
  2. 我是否使用“premake gmake”并以某种方式感知本机平台,还是需要将目标平台显式放置在命令行上并在 premake 配置和平台部分中引用该平台?
  3. 我听说 premake 4.x 是遗留的,premake 5.x 是未来的解决方案。它是否足够稳定和可用以构建所有这些平台?

我知道这是很多问题,但我想正确地做到这一点。

谢谢。

4

3 回答 3

2

我不是多平台编译方面的专家,但这里有一些东西可能会对你有所帮助。首先,我强烈建议您切换到 Premake5。它很稳定,社区在它上面工作并且非常活跃,并且您支持模块(Android?:p)和许多很酷的其他功能。

至于你的问题:

  1. 我不能,但基本上它应该像这样简单:

    solution "multiplatform_solution"
        configurations { "debug", "release", "whatever" }
    
        -- now here, you define your supported platforms
        platforms {
            "win32",
            "win64",
            "macos",
            "linux86",
            "linux64",
            -- etc.
        }
    
        project "some_project"
    
            -- now you can configure some things per platform:
            filter { "platforms:win32" }
                -- some defines, some specific paths to libs, etc.
                -- specific to win 32
                defines { "WIN32" }
            filter { "platforms:macos" }
                -- macos specific configurations
                defines { "you_fool_" } -- yes, it's a troll :p
            -- etc.
    
            -- and configure the rest as usual
    
  2. 当您调用时,premake gmake您只需告诉 premake 为 gmake 构建一个 makefile。如果您在 Windows、MacOS 和 Linux 上安装了 gmake,则可以premake gmake在所有平台上使用。当您实际构建时,您只需要指定您的配置和平台。我不太了解 gmake,但这可能看起来像这样:gmake config=release platform=linux32

  3. 正如我所说,你可能想更新到 Premake 5。我认为它足够稳定,如果有问题你可以在这里提问:)

于 2015-06-17T08:55:11.223 回答
1

谁能指点我一个好的多平台预制脚本?

如果你查看一个 Premake 源包,你会发现它包含多个 makefile,一个对应于它所针对的每个平台,位于名为build/gmake.windows和的目录中build/gmake.macosx。这是一种选择。

另一种方法是将所有内容放在一个 Makefile 中,就像 @Citron 在他的脚本中建议的那样,并在您进行构建时在命令行上选择所需的配置。在这种情况下,您的构建命令应如下所示:

$ make config=debug_win32

如果您help在 Premake 生成的 Makefile 上运行目标,它将为您提供所有有效配置选项的列表:

$ make help

或者,如果您不介意要求您的开发人员在本地安装 Premake,他们可以在构建之前为他们的环境生成一个定制的 makefile。在这种情况下,您的脚本可能类似于:

solution "MySolution"
   configuration { "Debug", "Release" }

   filter { "system:Windows" }
      -- windows specific stuff

   filter { "system:MacOSX" }
      -- mac specific stuff

   filter { "system:Linux" }
      -- etc.

在这种情况下,运行premake5 gmake将创建一个针对当前环境的 makefile。

于 2015-07-16T16:44:01.270 回答
0

这非常接近。我认为更接近的答案是在“系统:”上使用过滤器。我认为这是使用 premake 生成多平台 make 和使用它来构建当前平台 makefile 之间的区别。

这是迄今为止最接近的答案,所以我会赞成。

于 2015-07-09T16:19:57.123 回答