2017-03-15 14 views
0

私はしばらくの間、premake使用されています。premakeで偽のターゲットを生成するには?

-- [[ X. External Makefile libraries ]] 
project "external" 
    kind "Makefile" 
    location "build" 

    buildcommands { 
     "cd ..; make -f Makefile" 
    } 

    cleancommands { 
     "cd ..; make -f Makefile clean" 
    } 

-- [[ X+1. Integration ]] 
project "integration" 
    kind "Makefile" 
    location "build" 

    buildcommands { 
     -- PacketNgin Application Library 
     "ar x ../libc.a", 
     "ar x ../libm.a", 
     "ar x ../libtlsf.a", 
     "ar x ../libcore.a", 
     "ar x ../libexpat.a", 
     "ar rcs ../libpacketngin.a *.o", 

    "cp -rL ../core/include/* ../../include", 
    "cp -rL ../expat/include/* ../../include", 
    "cp -rL ../openssl/include/* ../../include", 
    "cp -rL ../zlib/*.h ../../include", 

     "rm ./*.o -rf", 

     -- Linux Application library 
     "ar x ../libtlsf.a ",  -- Blank is added at the end on purpose 
     "ar x ../libcore_linux.a", 
     "ar rcs ../libumpn.a *.o", 
     "rm ./*.o -rf ",   -- Blank is added at the end on purpose 
    } 

    cleancommands { 
     "rm *.o -rf", 
     "rm ../*.a -rf" 
    } 

以下のようなことのために、私は(...外部ライブラリなどのために構築し、例えば、デバッグ、パッケージ)小さなスクリプトか何か相を構築するために無関係であるように思わ実行する必要があり、私はちょうど使用のMakefileプロジェクトI実際のビルドメークファイルを偽のターゲットから分離しないため、この練習は非常に混乱していることを理解してください。だから、私はpremakeで偽のターゲットを生成することを知りたい。

私はnewaction構文を検討したが、私はそれだけでpremakeスクリプトではなく、Makefileのターゲットのターゲットを作るました。

任意のベストプラクティスやpremakeで偽のターゲットを生成する方法はありますか?

答えて

0

この時点では、任意の偽のターゲットを作成することはできません(submit a feature requestでも可能ですが、create a pull request)。

でも、で、コマンドを実行するためにPremake自体を使用できます。ここでは「統合」と呼ばれる新しいアクションを作成する簡単な例です:

$ premake5 integrate 
:一度、あなたのプロジェクトのスクリプトに追加

function executeAll(commands) 
    for _, command in ipairs(commands) do 
     os.execute(command) 
    end 
end 

newaction 
{ 
    trigger = "integrate", 
    description = "Run integration steps", 
    execute = function() 
     executeAll { 
      "ar x ../libc.a", 
      "ar x ../libm.a", 
      "ar x ../libtlsf.a", 
      "ar x ../libcore.a", 
      "ar x ../libexpat.a", 
      "ar rcs ../libpacketngin.a *.o", 
      -- and so on... 
     } 
    end 
} 

、あなたは次のようにそれを呼び出すことができます

関連する問題