On 04-Sep-14 16:48, Chuck Atkins wrote:

    Command `if(a MATCHES ...)` has the same flaw:
    `if(<variable|string> MATCHES regex)`:
    ..
    set(MYSTRING "B")
    set(A "MYSTRING")
    if("${A}" MATCHES "^MYSTRING$")
      # do *not* go here even A is MYSTRING (use *variable* MYSTRING)
    endif()


This should work without dereferencing A, i.e.:

if(A MATCHES "^MYSTRING$")
  # Bingo
endif()
Yes, but what if you need to combine some values, like: `if("${A}-${B}" MATCHES ...)`? Note that `if(A MATCHES "first-part" AND B MATCHES "second-part")` is not the solutions in some cases, for example:

if("${A}${B}" MATCHES "/home/my/dir-A/")

should work for both A,B = {"/home/", "my/dir-A/"} and {"/home/my/", "dir-A/"}

Also you always need keep in mind that it's not a string, but a regular expression, example:

set(A "path/to/test/project")
set(B "path/to/test.project")

message("A and B same dir?")
if(A MATCHES "^${B}$")
  message("surprise")
endif()
-- 

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