Premake 脚本语法

请问有人可以解释一下 Premake 脚本的语法吗?Premake 脚本是一个有效的 Lua 脚本。那么下面的代码中的 solutionconfigurationsproject 是什么?是变量还是关键字?

-- 一个方案包含项目,定义可用的配置
solution "MyApplication"
   configurations { "Debug", "Release" }

   -- 一个项目定义一个构建目标
   project "MyApplication"
      kind "ConsoleApp"
      language "C++"
      files { "**.h", "**.cpp" }

      configuration "Debug"
         defines { "DEBUG" }
         flags { "Symbols" }

      configuration "Release"
         defines { "NDEBUG" }
         flags { "Optimize" }

编辑:它们是函数调用。那么下面的代码怎么执行?definesflags 是根据 configuartion 的上下文调用的吗?

点赞
用户4567755
用户4567755

函数

如果函数只需要一个参数,且参数为表格或字符串,则可以省略括号。请参阅3.4.10 - 函数调用

此外,你的示例缩进是任意的。你可以编写如下代码:

project("MyApplication")
kind("ConsoleApp")
language("C++")
files({"**.h", "**.cpp"})

这与原始代码一样好。

对于第二个问题。很可能 configuration 和相关的 definesflags 操作某些隐藏的本地状态。当你调用 configuration 时,它将更改此本地状态以引用例如“Debug”的配置,因此所有后续调用也都会引用此本地状态。示例如下:

do
   local state
   function set_state (name)
      state = name
   end
   function print_with_suffix (suffix)
      print(state, suffix)
   end
end
set_state("hello")
print_with_suffix("world") --> hello  world
2020-07-16 10:05:37