根据给定的链接在项目范围内获取预制项目
Fetching premake projects inside a project scope based on the given links
承认我目前的范围是一个项目
我正在使用 premake-dev
solution "MySolution"
project "MyProject"
...
links
{
"lib1",
"lib2",
...
}
如何访问链接功能中引用的项目列表。
目的是执行 post-build 命令,将一些生成的库复制到特定文件夹。
我应该存储项目返回值吗?
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=...
处理此问题的最全面方法是覆盖 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
并对其进行操作
承认我目前的范围是一个项目
我正在使用 premake-dev
solution "MySolution"
project "MyProject"
...
links
{
"lib1",
"lib2",
...
}
如何访问链接功能中引用的项目列表。 目的是执行 post-build 命令,将一些生成的库复制到特定文件夹。
我应该存储项目返回值吗?
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=...
处理此问题的最全面方法是覆盖 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
并对其进行操作