2017-09-20 4 views
0

J'essaye de générer un projet pour le studio visuel configuré pour Ps4. Dans mon projet, j'ajouté ceci:Remplacer archFromConfig dans premake5 alpha12

require "orbis" 

... 

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

puis j'ai écrit un 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) 

Ma configuration fonctionnait correctement dans Premake5 alpha4 mais quand je mets à jour à Premake5 alpha12 je cette erreur.

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

Je glissai impression de comprendre ce appening je ... ce

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

Alors, mon orbis.lua est chargé avant que le module vsstudio, donc pas de fonction est définie encore. Ce que j'ai mal fait? Comment puis-je réparer ça?

Merci d'avance.

Répondre

1

Cela a pris un peu de casse-tête. Le code Visual Studio a été déplacé dans un module interne, qui n'est chargé que s'il est réellement nécessaire. Vous avez juste besoin d'exiger ce module avant de tenter le remplacement.

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) 
+0

Cela a beaucoup de sens. Merci beaucoup. – ilmale