所以,我已经开始了这个新项目,并正在编写我的预制脚本,但生成它失败并生成
此错误:[string"src/base/api.loa"]:592:"deferredjoin"的错误参数#2(应为字符串,已获取表(
通常,当它只是一个打字错误时,错误消息会在脚本中包含一个行号。我看了
预制源文件中的错误,但无法解决。
这是脚本:
workspace "DX12"
architecture "x86_64"
startproject "Demo"
configurations
{
"Debug",
"Release"
}
flags
{
"MultiProcessorCompile"
}
outputdir = "%{cfg.buildcfg}-%{cfg.system}-%{cfg.architecture}"
project "Demo"
location "Demo"
kind "WindowedApp"
language "C++"
cppdialect "C++17"
staticruntime "on"
targetdir {"bin/" .. outputdir .. "/%{prj.name}"}
objdir {"bin-int/" .. outputdir .. "/%{prj.name}"}
files
{
"%{prj.name}/src/**.h",
"%{prj.name}/src/**.cpp"
}
includedirs
{
"%{prj.name}/src"
}
links
{
"d3d12.lib",
"dxgi.lib",
"d3dcompiler.lib"
}
filter "system:windows"
systemversion "latest"
filter "configurations:Debug"
defines "DEBUG"
runtime "Debug"
symbols "on"
filter "configurations:Release"
defines "RELEASE"
runtime "Release"
optimize "on"
这个脚本到底出了什么问题,是什么原因导致了这个错误的产生?
targetdir
和objdir
都需要一个指示路径的参数。Premake通常将路径处理为字符串,以便最终用户可以使用语法糖并省略括号。他们通常用这种简化的语法来举例,有时会引起误解。
交换机:
targetdir {"bin/" .. outputdir .. "/%{prj.name}"}
objdir {"bin-int/" .. outputdir .. "/%{prj.name}"}
至:
targetdir ("bin/" .. outputdir .. "/%{prj.name}")
objdir ("bin-int/" .. outputdir .. "/%{prj.name}")