[CMake] An observation about CTest

Eric Noulard eric.noulard at gmail.com
Sun Jun 27 16:42:11 EDT 2010


2010/6/27 Convey, Christian J CIV NUWC NWPT <christian.convey at navy.mil>:
> I don't expect a lot of support for what I'm about to say, but I think it's perhaps worth saying anyway...
>
> It seems like CMake's and CTest's have outgrown their scripting languages.
>
> As far as I can tell, all CMake/CTest variables are either macro formal parameters, or variables in a
> single global namespace.  I think one consequence of this is that macro invocations make their
> contributions primarily by modifying variables in the global namespace.  As people discovered in the
> 1970's and 1980's, the confusion caused by this approach (global variables) can be so extensive that
> it's worthwhile to change coding pracices (structured programming, etc.), and possibly to improve
> the base language as well.

I think you should dive into the Mailing List archive because there
have been several valuable
discussion about CMake evolution including the "replacement/extension"
of CMake scripting
language with "full language" like Lua or Python.

> But even better would be enhancing the CMake scripting language to support local variables in
> macros, and possible package-scoped variables as well.  This clarifies the intended interface that
> certain macro packages are intended to provide, because variables intended as implementation
> details would be in a namespace inaccessible to the script that invokes those macros.

CMake is offering scope from a parent/child point of view including
setting variable for your parent with set(xxxx PARENT_SCOPE) this was indeed
provided after lengthly ML discussion.

Concerning "local variables" you should have a look at the difference between
a "MACRO" and a "FUNCTION" this may already gives you part of what you want.

Then as far as I can tell CMake scripting is no-where near a "must not
evolve" language
many improvement has been put in since I began to use CMake 2.2.x
(can't remember X)
even the introduction of "POLICY" which each backward compatibility.

So I think you may not hope to have ALL what you require in CMake
after a message on this
ML be you will certainly have feedback and may be new feature if there
is a consensus
and some proof of concept patch provided.

-- 
Erk
Membre de l'April - « promouvoir et défendre le logiciel libre » -
http://www.april.org


More information about the CMake mailing list