我将premake4配置转换为premake5。我的prebuild命令失败,因为命令是从根工作目录执行的,而不是premake5.lua所在的目录,其中包含⪯预备命令'。 premake4在包含prebuildcommands调用的子目录中执行它们。
这是新的预期行为吗?如果是这样的话,我没有记录在任何地方。我不介意纠正这些路径,只要它不是一个bug。
答案 0 :(得分:1)
这看起来对我来说是正确的行为。 Premake不会尝试解析命令以识别路径,因此它们在输入时保持不变。命令本身由构建工具(Visual Studio,GMake等)执行,因此将在当时工具生成的任何目录中运行。
如果我正确读取它,你希望命令在项目目录中执行,那么:
prebuildcommands {
"%{prj.location}/styx/utils/ndate > %{prj.location}/include/kerndate.h"
}
对于Visual Studio,Premake会将这些令牌转换为$(ProjectDir)
,以便它们保持相对于生成的项目文件。