Comment by warmwaffles

5 hours ago

I use it for personal projects and I find it substantially easier to mess around with compiling shaders to SPIRV, processing assets, etc... But some of my gripes are, although it _is_ lua, there is some magic fuckery going on. When you specify targets, things for that target need to be close to the definition, and it feels very odd in a lua language to not have `target("name", function (ctx) ... end)`.

Anyways, not going to die on that hill and I'll keep using it because it's simple and works well for my needs. One thing I do like is that I am not having to constantly keep a skeleton CMake project around to copy paste and setup.

> not have `target("name", function (ctx) ... end)`.

It supports this syntax.

https://xmake.io/guide/project-configuration/syntax-descript...

  target("foo", function ()
      set_kind("binary")
      add_files("src/*.cpp")
      add_defines("FOO")
  end)

  • I think the creators did it a disservice to xmake when they tried to unluaize the syntax. You can also do:

        target("foo", {
          kind = "binary",
          files = { "src/*.cpp" },
          includedirs = { "src" },
          defines = { "FOO", "BAR=BAZ" },
        })
    

    which suits Lua better. Unfortunately you cannot do

        target {
          name = "foo",
          kind = "binary",
          files = { "src/*.cpp" },
          includedirs = { "src" },
          defines = { "FOO", "BAR=BAZ" },
        }
    

    which would be the lua-est lua of all.

  • I did not spot those in the docs. Thanks a ton. This will help my autoformatter not completely wreck my files.