在 Premake5 alpha12 中覆盖 archFromConfig

我正在尝试为配置为 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 模块之前加载,因此还没有定义函数。我做错了什么?我该如何解决这个问题?

先谢谢。

点赞
用户93921
用户93921

那需要稍微费点脑子。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 )
2017-09-20 18:24:47