我正在将 premake4 配置转换为 premake5。我的 prebuildcommands 失败了,因为这些命令是从根工作目录执行的,而不是 premake5.lua 所在的包含“prebuildcommands”的目录。premake4 在包含 prebuildcommands 调用的子目录中执行它们。
这是新的预期行为吗?如果是这样,它没有记录在我能找到的任何地方。只要不是错误,我不介意更正路径。
我正在将 premake4 配置转换为 premake5。我的 prebuildcommands 失败了,因为这些命令是从根工作目录执行的,而不是 premake5.lua 所在的包含“prebuildcommands”的目录。premake4 在包含 prebuildcommands 调用的子目录中执行它们。
这是新的预期行为吗?如果是这样,它没有记录在我能找到的任何地方。只要不是错误,我不介意更正路径。
这对我来说似乎是正确的行为。Premake 不会尝试解析命令来识别路径,因此它们在输入时保持不变。该命令本身由构建工具(Visual Studio、GMake 等)执行,因此将在该工具当时成为最新的任何目录中运行。
如果我没看错,您希望命令在项目目录中执行,那么:
prebuildcommands {
"%{prj.location}/styx/utils/ndate > %{prj.location}/include/kerndate.h"
}
对于 Visual Studio,Premake 会将这些标记转换为,$(ProjectDir)
以便它们保持相对于生成的项目文件。