On Tue, Jan 22, 2019 at 19:31:43 +0100, [email protected] wrote:
> Currently, the Code that evaluates the ${}-Syntax only evaluates the key, if
> the key is not an empty string:
>
> const char* cmCommandArgumentParserHelper::ExpandSpecialVariable(
> const char* key, const char* var)
> {
> if (!key) {
> return this->ExpandVariable(var);
> }
> if (!var) {
> return "";
> }
> if (strcmp(key, "ENV") == 0) {
> std::string str;
> if (cmSystemTools::GetEnv(var, str)) {
> if (this->EscapeQuotes) {
> return this->AddString(cmSystemTools::EscapeQuotes(str));
> }
> return this->AddString(str);
> }
> return "";
> }
> if (strcmp(key, „CACHE") == 0) {
>
> …
>
> so, there seems to be no risk to slow down the ExpandVariable()-Path (but of
> cause, I would measure the difference).
That's the old (pre-CMP0053) parser. The new code for handling the
`$XXX{` parse switching is in `Source/cmMakefile.cxx:2810` (or so). The
method is `cmMakefile::ExpandVariablesInStringNew`. It is very
performance sensitive (i.e., the old parser is so slow compared to the
new one that running the new one beside it doesn't really affect
performance much and is what allows for CMP0053 warning messages).
--Ben
--
Powered by www.kitware.com
Please keep messages on-topic and check the CMake FAQ at:
http://www.cmake.org/Wiki/CMake_FAQ
Kitware offers various services to support the CMake community. For more
information on each offering, please visit:
CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake-developers