On 04-Sep-14 20:40, Hendrik Sattler wrote:

On 4. September 2014 16:38:21 MESZ, Ruslan Baratov via CMake <[email protected]> 
wrote:
On 04-Sep-14 18:09, Anders Lindgren wrote:
make sure that the argument don't form a valid variable name.
It's not possible

     set(a b)
     set(b c)
     if(">${a}<" STREQUAL ">b<" OR ">${a}<" STREQUAL ">c<")
       message("true")
     endif()
How about that:

set(a "") # variable `a` is empty
set("><" ">b<")

if(">${a}<" STREQUAL ">b<")
   message("Value of variable with name `a` is `b`!")
endif()
I really do not understand this argument.
Do you have so little control over your build tool (and that's what CMake is)?
Nobody makes variables like this. Maybe to break the build script on purpose. 
And then, it breaks, so what?

HS

The solution ">...<" not changing the reason of the problem - ambiguity. It's just making things more obscure. My example prove that statement "make sure that the argument don't form a valid variable name" by creating string ">...<" is wrong. Here is example of how "strange" names can appear:

# User's code
macro(set_version package component version)
  set("${package}-${CMAKE_DEBUG_POSTFIX}_${component}" "${version}")
endmacro()

set(CMAKE_DEBUG_POSTFIX d)

if(Somepackage_FOUND)
  set(pack_name "Somepackage")
  set(pack_component "Somecomp")
  set(pack_version "1.2.3")
else()
  set(pack_name "")
  set(pack_component "")
  set(pack_version "")
endif()

set_version("${pack_name}" "${component}" "${version}")

find_package(...) # User call my code here

If package not found the variable "-d_" is defined and empty. Some user choose "-" and "_", the other choose ">" and "<". I don't want to blame/teach *users* for creating such names. The important thing is that it will not ruin my code.

Cheers, Ruslo
--

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/mailman/listinfo/cmake

Reply via email to