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 に答える