> Am Sonntag, 13. April 2014, 09:59:03 schrieb Jiri Malak: >> >> I enclosed patch for removing placeholder "x" from STREQUAL operands. >> >> It does comparision transparent. >> > >> > I very much would like to see that, but there is a problem: CMake may >> > interpret the operands of STREQUAL both as text and as variable name. >> > >> > So this does what you expect for the moment: >> > >> > if (${CMAKE_SYSTEM_NAME} STREQUAL Linux) ... >> > >> > But now you will get into trouble: >> > >> > set(Linux Windows) >> > >> > Sadly the expression is even expanded when it is quoted as long as it is a >> > valid variable name. > ^^^ > >> Sorry, I am new for CMake script. >> Is it also true for quoted operands? > > Yes. > > One other way to solve this: if you are sure both expressions are indeed > variables you may simply write "if (foo STREQUAL bar)": the expression will > always be expanded and you don't need any quoting. This is why e.g. things > like CMAKE_* are rarely quoted or expanded by hand in such an expression, it > is known that they will be a variable and will be expanded. > > Eike
Hmm.. It is a little bit confusing for newcommers that you can not do simple comparision for text word if some variable with this name exists. Thanks Jiri -- 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: http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers