0

承认我目前的范围是一个项目

我正在使用 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 导出 --target=...

4

1 回答 1

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并对其进行操作。

于 2015-06-08T16:12:30.877 回答