预制脚本的语法

Syntax of premake scripts

谁能给我解释一下 premake 脚本的语法是什么意思?预制脚本是有效的 lua 脚本。那么下面代码中的solutionconfigurationsproject是什么?变量?关键词?

-- A solution contains projects, and defines the available configurations
solution "MyApplication"
   configurations { "Debug", "Release" }

   -- A project defines one build target
   project "MyApplication"
      kind "ConsoleApp"
      language "C++"
      files { "**.h", "**.cpp" }

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

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

编辑:它们是函数调用。那么这部分怎么样

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

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

执行了吗? definesflags 调用将根据 configuartion?

的上下文调用

函数

如果函数只接受一个参数,即 table 或字符串,则括号可以省略。参考3.4.10 - Function Calls.

此外,在您的示例中,缩进是任意的。你可以这样写:

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