覆盖premake5 alpha12中的archFromConfig

时间:2017-09-20 10:55:47

标签: lua premake

我正在尝试为为Ps4配置的visual studio生成一个项目。 在我的项目中,我添加了这个:

require "orbis"

...

platforms { "x64", "ORBIS" }
filter "platforms:ORBIS"
    toolset "Clang"
    targetextension(".elf")
    architecture "Orbis"

然后我写了一个orbis.lua

local p = premake
local vs = p.modules.vstudio

p.api.addAllowed("architecture", { "Orbis" })

local function archFromConfig_cb(base, cfg, win32)
    if cfg.system == "Orbis" or cfg.architecture  == "Orbis" then
        return "ORBIS"
    end
    return base( cfg, win32 )
end

p.override( vs, "archFromConfig", archFromConfig_cb )

我的设置在Premake5 alpha4中正常工作但是当我更新到Premake5 alpha12时出现此错误。

orbis.lua:54: unable to override 'archFromConfig'; no such function

我添加了一些印刷品,以了解我有什么意思......

Overriding
Building configurations...
loading modules vsstudio
Running action 'vs2017'...

因此,我的orbis.lua在vsstudio模块之前加载,因此尚未定义任何函数。我做错了什么?我该如何解决这个问题?

提前致谢。

1 个答案:

答案 0 :(得分:1)

这有点令人费解。 Visual Studio代码已移至内部模块,只有在实际需要时才会加载。您只需在尝试覆盖之前需要该模块。

local p = premake
local vs = require("vstudio")

p.api.addAllowed("architecture", { "Orbis" })

local function archFromConfig_cb(base, cfg, win32)
    if cfg.system == "Orbis" or cfg.architecture  == "Orbis" then
        return "ORBIS"
    end
    return base( cfg, win32 )
end

p.override( vs, "archFromConfig", archFromConfig_cb )