Выборка premake проектов в рамках проекта на основе заданных ссылок

Признание моего текущего масштаба является проектом

Я использую premake-dev

solution "MySolution"
    project "MyProject"
    ...
    links
    {
      "lib1",
      "lib2",
      ...
    }

Как я могу получить доступ к списку проектов, на которые есть ссылки в функции ссылки. Цель состоит в том, чтобы выполнить команду после сборки, которая скопирует некоторые из сгенерированных библиотек в определенную папку.

Должен ли я хранить возвращаемое значение проекта?

local proj = project "MyProject"

Исходя из этого, как мне поступить с перечислением проектов, перечисленных в ссылках?

Обновить

Я успешно перечислил связанные проекты, используя небольшой фрагмент кода:

local prj = project() -- return the current project
local sln = solution() -- returne the current solution
local linkedPrjs = {}
for p in premake.solution.eachproject(sln) do
    if table.find(prj.links, p.name) then
        table.insert(linkedPrjs, p)
    end
end

Проблема теперь другая, когда premake достигает этого куска кода (который находится внутри моего проекта, сразу после объявления ссылок), конфигурации еще не настроены.

Вы не можете использовать: premake.project.eachconfig(prj) как это скинет ошибку.

Так что я подумываю о регистрации нового действия с использованием API, я не уверен, что это лучший выбор:

premake5 export --target =...

1 ответ

Решение

Наиболее полный способ справиться с этим будет переопределить premake.oven.finishConfig() и добавьте свою собственную логику там. Это позволит вам использовать всю существующую логику фильтрации Premake.

premake.override(premake.oven.finishConfig, function (base, cfg)
   base(cfg)
   for i = 1, #cfg.links do
      -- add to cfg.postbuildcommands here
   end
end)

В зависимости от ваших потребностей может быть проще создать собственную замену links(),

function my_links(x)
   local prj = project()
   prj.my_links = x
   links(x)
end

Тогда вы можете получить my_links в любое время и оперируй на нем.

Другие вопросы по тегам