[CMake] Re: CMake and Lua

Enrico Scholz enrico.scholz at informatik.tu-chemnitz.de
Sat Mar 1 13:44:36 EST 2008


Bill Hoffman <bill.hoffman at kitware.com>
writes:

>> I find that the CMake script language seems designed to make COBOL
>> coders feel they don't actually have the worst job in the world.
>>
> So what exactly about the CMake language gives you this feel?

* the mix of case-sensitive and case-insensitve language elements

  Afair, HTML in 1992 was the last (non-educational) language with
  case-insensitive keywords ;)


* no well defined syntax:

  - missing datatypes; all seems to be a string.  Mastering ';' and
    spaces is trial-and-error game :(

  - function/macro calls are ambiguous; everything is a string, parameters
    are not delimited e.g. by ',' but start with a keyword understood by
    actual macro only.

    E.g. why will

    | EXEC_PROGRAM(foo ARGS ARGS foo)
    | EXEC_PROGRAM(bar HERE ARGS bar)
    | EXEC_PROGRAM(baz ARGS HERE baz)

    execute

    | running foo foo  2>&1
    | running cd "HERE" && bar bar  2>&1
    | running baz HERE baz  2>&1

    ?

  CMake is a tool written for developers. So you can expect that they have
  some understanding of grammar and semantics of a computer language. You
  do not need to simplify things so that they work in most cases but are
  completely undefined in the remaining ones.


* inconsistent behavior across the subsystems (build, install, test);
  e.g.

  | ADD_CUSTOM_TARGET(test COMMAND echo "A=\${A}")
  | INSTALL(CODE "MESSAGE(\"A=\${A}\")")

  | $ make A=a test
  | A=a
  | $ make A=a install
  | A=


Enrico



More information about the CMake mailing list