Выборка 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
в любое время и оперируй на нем.