2010/7/21 Brian Davis <bitmi...@gmail.com>: > I agree with Olaf. CMake needs better error reporting for parameter > checking on macros and functions
Good idea but this seems difficult to do. In Olaf case it may be doable to spit out a better error message explicitely saying that "T" was considered as the "<language>" argument of PROJECT, because PROJECT is a builtin however... > I ran into similar with use of: > > http://www.cmake.org/Wiki/CMakeMacroParseArguments > > where I elided the empty quotes "" and it was as though the macro/function > it was contained in did not exist as though it could not find the ending > paren ")". I realize I should always use functions as specified, but as > humans inevitably make mistakes it's best to have decent error reporting so > we can correct our ways. [...] In this case the MACRO CMake command has only "positional" arguments handling. So if you miss-use the ParseArguments macros the better you can do is enhance the ParseArguments macro in order to do a better job while checking its arguments. May be the only way to have a better error reporting would be to have a new kwmacro(<name> KEYWORD <kw1> arg1 KEYWORD kw2 arg2 .... KEYWORD kwN argN) kwmacro(<name>) that would support keyword call instead of positional call. i.e. kwmacro(PARSE_ARGUMENTS KEYWORD PREFIX prefixarg KEYWORD ARGNAMES argnames KEYWORD OPTIONSNAME optnames) kwmacro(PARSE_ARGUMENTS) then you MUST call PARSE_ARGUMENTS(hello world PREFIX ARG ARGNAMES "LIST1;LIST2;LIST3" OPTIONSNAME "OPTION1;OPTION2;OPTION3") i.e. non keyword argument MUST be given before ANY keywords arg (pretty much like in Python). kwmacro as a builtin would set for you KW_<keyword>_GIVEN to TRUE is the <keyword> have been given. KW_<keyword>_ARGS to the list of arguments given to <keyword>. KW_DEFAULTS_ARGS will be the list of positional arguments. basically it is the feature provided by PARSE_ARGUMENTS but as a more robust builtin. -- Erk Membre de l'April - « promouvoir et défendre le logiciel libre » - http://www.april.org _______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake