Hi. I can't belive it was so simple. In our code (I inherited it from a former employee) we had:
add_test(ut ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ut) I never thought there might by something wrong with it. I've changed the above to: add_test(NAME ut COMMAND ${CMAKE_COMMAND} -E environment) an WOW - escaping now works as expected! Thanks David. -- Gruesse, Jakub -----Original Message----- From: David Cole [mailto:david.c...@kitware.com] Sent: Dienstag, 16. Oktober 2012 19:40 To: Jakub Zakrzewski Cc: Petr Kmoch; cmake@cmake.org Subject: Re: [CMake] Setting test environment on windows The following example demonstrates a way for you to achieve what you need: cmake_minimum_required(VERSION 2.8) project(t1) include(CTest) add_test(NAME test01 COMMAND ${CMAKE_COMMAND} -E environment) set_property(TEST test01 APPEND PROPERTY ENVIRONMENT Z1ENV=1;2;3 Z2ENV=a;b;c) add_test(NAME test02 COMMAND ${CMAKE_COMMAND} -E environment) set_property(TEST test02 APPEND PROPERTY ENVIRONMENT Z1ENV=1\;2\;3 Z2ENV=a\;b\;c) add_test(NAME test03 COMMAND ${CMAKE_COMMAND} -E environment) set_property(TEST test03 APPEND PROPERTY ENVIRONMENT "Z1ENV=1\;2\;3" "Z2ENV=a\;b\;c") Only test03 actually produces the sort of results you want with semi-colons embedded in the env variable value. So: escape the semi-colons in the PATH value and enclose "PATH=${path_value}" in double quotes That should give you what you need. To escape the semi-colons, use: string(REPLACE ";" "\\;" path_value "${path_value}") Let us know if this works for you and what your final code looks like so others can reference it too. HTH, David On Wed, Oct 10, 2012 at 8:57 AM, Jakub Zakrzewski <jzakrzew...@e2e.ch> wrote: > Hi, thanks for response. > > Unfotunatly: > > set(THIRD_PARTY_LIBS "${THIRD_PARTY_LIBS}\;${JAVA_JVM_LIBRARY_PATH}"); > > SET_TESTS_PROPERTIES(ut PROPERTIES ENVIRONMENT > "BRIDGESERVER_BIN=D:/Projects/e2e_bridge/server/head/src/AddOns/Persis > tentState;PATH=\"D:/Projects/e2e_bridge/server/head/bin/win64-debug;C: > /Program > Files/Java/jdk1.6.0_30/lib/../jre/bin/server\";INSTANCES_HOME=D:/Proje > cts/e2e_bridge/server/head/build/win64-debug;INSTANCE_HOME=D:/Projects > /e2e_bridge/server/head/build/win64-debug") > > This looks correct at first glance, but doesn't work. I mean the PATH is > definatly not set correctly as jvm.dll is not found. When I set it manually > before running the "ut" executable, it's OK. > > -- > Gruesse, > Jakub > > > > > From: Petr Kmoch [mailto:petr.km...@gmail.com] > Sent: Mittwoch, 10. Oktober 2012 14:40 > To: Jakub Zakrzewski > Cc: cmake@cmake.org > Subject: Re: [CMake] Setting test environment on windows > > Hi Jakub. > > I would try adding quotes around the dereference of THIRD_PARTY_LIBS. That is: > set_properties(... PATH="${THIRD_PARTY_LIBS}" ...) > > Petr > On Wed, Oct 10, 2012 at 2:13 PM, Jakub Zakrzewski <jzakrzew...@e2e.ch> wrote: > Hi All. > > Could someone explain to me, how properly set environment for CTest from > CMakeLists.txt? > > Ihave something like: > > set(THIRD_PARTY_LIBS "${THIRD_PARTY_LIBS};${JAVA_JVM_LIBRARY_PATH}"); > set_properties(TEST myTest PROPERTY ENVIRONMENT > BRIDGESERVER_BIN=${PROJECT_SOURCE_DIR}/src/AddOns/PersistentState > PATH=${THIRD_PARTY_LIBS} > INSTANCES_HOME=${CMAKE_BINARY_DIR} > INSTANCE_HOME=${CMAKE_BINARY_DIR} > ) > > This gets expanded to: > SET_TESTS_PROPERTIES(ut PROPERTIES ENVIRONMENT > "BRIDGESERVER_BIN=D:/Projects/e2e_bridge/server/head/src/AddOns/Persis > tentState;PATH=D:/Projects/e2e_bridge/server/head/bin/win64-debug;C:/P > rogram > Files/Java/jdk1.6.0_30/lib/../jre/bin/server;INSTANCES_HOME=D:/Project > s/e2e_bridge/server/head/build/win64-debug;INSTANCE_HOME=D:/Projects/e > 2e_bridge/server/head/build/win64-debug") > > Which is wrong (note the semicolon). Below are my trials and their results: > > > #1st > set(THIRD_PARTY_LIBS "${THIRD_PARTY_LIBS}\;${JAVA_JVM_LIBRARY_PATH}"); > > SET_TESTS_PROPERTIES(ut PROPERTIES ENVIRONMENT > "BRIDGESERVER_BIN=D:/Projects/e2e_bridge/server/head/src/AddOns/Persis > tentState;PATH=D:/Projects/e2e_bridge/server/head/bin/win64-debug;C:/P > rogram > Files/Java/jdk1.6.0_30/lib/../jre/bin/server;INSTANCES_HOME=D:/Project > s/e2e_bridge/server/head/build/win64-debug;INSTANCE_HOME=D:/Projects/e > 2e_bridge/server/head/build/win64-debug") > > #2nd > set(THIRD_PARTY_LIBS > "${THIRD_PARTY_LIBS}\\;${JAVA_JVM_LIBRARY_PATH}"); > > SET_TESTS_PROPERTIES(ut PROPERTIES ENVIRONMENT > "BRIDGESERVER_BIN=D:/Projects/e2e_bridge/server/head/src/AddOns/Persis > tentState;PATH=D:/Projects/e2e_bridge/server/head/bin/win64-debug;C:/P > rogram > Files/Java/jdk1.6.0_30/lib/../jre/bin/server;INSTANCES_HOME=D:/Project > s/e2e_bridge/server/head/build/win64-debug;INSTANCE_HOME=D:/Projects/e > 2e_bridge/server/head/build/win64-debug") > > #3rd > set(THIRD_PARTY_LIBS > "${THIRD_PARTY_LIBS}\\\;${JAVA_JVM_LIBRARY_PATH}"); > > SET_TESTS_PROPERTIES(ut PROPERTIES ENVIRONMENT > "BRIDGESERVER_BIN=D:/Projects/e2e_bridge/server/head/src/AddOns/Persis > tentState;PATH=D:/Projects/e2e_bridge/server/head/bin/win64-debug\\\\; > C:/Program > Files/Java/jdk1.6.0_30/lib/../jre/bin/server;INSTANCES_HOME=D:/Project > s/e2e_bridge/server/head/build/win64-debug;INSTANCE_HOME=D:/Projects/e > 2e_bridge/server/head/build/win64-debug") > > #4th > set(THIRD_PARTY_LIBS > "${THIRD_PARTY_LIBS}\\\\;${JAVA_JVM_LIBRARY_PATH}"); > > SET_TESTS_PROPERTIES(ut PROPERTIES ENVIRONMENT > "BRIDGESERVER_BIN=D:/Projects/e2e_bridge/server/head/src/AddOns/Persis > tentState;PATH=D:/Projects/e2e_bridge/server/head/bin/win64-debug\\\\; > C:/Program > Files/Java/jdk1.6.0_30/lib/../jre/bin/server;INSTANCES_HOME=D:/Project > s/e2e_bridge/server/head/build/win64-debug;INSTANCE_HOME=D:/Projects/e > 2e_bridge/server/head/build/win64-debug") > > #5th > set(THIRD_PARTY_LIBS > "${THIRD_PARTY_LIBS}\\\\\;${JAVA_JVM_LIBRARY_PATH}"); > > SET_TESTS_PROPERTIES(ut PROPERTIES ENVIRONMENT > "BRIDGESERVER_BIN=D:/Projects/e2e_bridge/server/head/src/AddOns/Persis > tentState;PATH=D:/Projects/e2e_bridge/server/head/bin/win64-debug\\\\; > C:/Program > Files/Java/jdk1.6.0_30/lib/../jre/bin/server;INSTANCES_HOME=D:/Project > s/e2e_bridge/server/head/build/win64-debug;INSTANCE_HOME=D:/Projects/e > 2e_bridge/server/head/build/win64-debug") > > I don't understand, the logic of escaping here. > -- > Gruesse, > Jakub > > > -- > > Powered by www.kitware.com > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Please keep messages on-topic and check the CMake FAQ at: > http://www.cmake.org/Wiki/CMake_FAQ > > Follow this link to subscribe/unsubscribe: > http://www.cmake.org/mailman/listinfo/cmake > > -- > > Powered by www.kitware.com > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Please keep messages on-topic and check the CMake FAQ at: > http://www.cmake.org/Wiki/CMake_FAQ > > Follow this link to subscribe/unsubscribe: > http://www.cmake.org/mailman/listinfo/cmake -- Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake