2015-06-24 38 views
1

我正在將premake4配置轉換爲premake5。我的預構建命令失敗,因爲這些命令是從根工作目錄執行的,而不是premake5.lua所在的包含「prebuild命令」的目錄。 premake4在包含prebuildcommands調用的子目錄中執行它們。Premake5 prebuild命令目錄

這是新的預期行爲?如果是這樣,它沒有記錄在我能找到的任何地方。只要不是錯誤,我不介意糾正這些路徑。

+0

我相信這是正確的行爲,說實話,我不確定Premake4如何做到這一點?但是可以肯定的是,你可以顯示Premake腳本的那部分內容嗎? – starkos

+0

謝謝starkos。這是premake5.lua文件的一部分。 '項目 「node9」 一種 「ConsoleApp」 TARGETDIR(_WORKING_DIR .. 「/ BIN」) 定義{ 「EMU」} prebuildcommands { 「回聲當前目錄是PWD」} prebuildcommands {「冥河/ utils的/ ndate> include/kerndate.h「} ' echo命令顯示根構建目錄的名稱,而下一個命令也將此確認爲重定向路徑錯誤。該文件包含在來自父目錄的'include/src'中。 – eris0xff

回答

1

這看起來對我來說是正確的行爲。 Premake不會嘗試解析命令以識別路徑,因此它們在輸入時保持不變。該命令本身由構建工具(Visual Studio,GMake等)執行,因此可以在該時刻該工具所處的任何目錄下運行。

如果我讀是正確的,你想的命令,在項目目錄來執行,所以怎麼樣:

prebuildcommands { 
    "%{prj.location}/styx/utils/ndate > %{prj.location}/include/kerndate.h" 
} 

對於Visual Studio,Premake將這些令牌轉換爲$(ProjectDir)所以他們會留下來相對於生成的項目文件。