Hello, That does not work. Using FILE( TO_NATIVE_PATH ) would create this shdir.c:
char shdir[256]="C:\Cache2008\Mgr"; I need "\\" instead of "\" in shdir.c or the C compiler would fail. On Fri, Mar 6, 2009 at 1:06 AM, Clinton Stimpson <[email protected]> wrote: > > How about just using forward slashes everywhere and use file(TO_NATIVE_PATH > ...) for the variable substituted by configure_file(...). > That works without problems for me. > Then you don't have to have any "\\" for escaping or "\\\\" for twice > escaping. > > Clint > > Pau Garcia i Quiles wrote: >> >> I forgot to say if I edit the variable value in the Qt GUI and replace >> "C://Intersystems//Cache" with "C:\\Intersystems\\Cache", the >> backslashed value is stored in the cache and shdir.c contains the >> expected output (with '\\'). >> >> But if I call CMake form the command line: >> cmake -DCALLIN_PATH:PATH="C:\\\\Intersystems\\\\Cache" >> >> I get forward slashes in the CMake cache and in the generated shdir.c. >> Interestingly, on Windows only 2 forward slashes make it into the >> CMake cache but on Linux all 4 of them are in the CMake cache. >> >> On Thu, Mar 5, 2009 at 11:14 PM, Pau Garcia i Quiles >> <[email protected]> wrote: >> >>> >>> Hello, >>> >>> I started writing a bug report but I'm not really sure if this is a >>> bug or a feature. >>> >>> On Win32, if you assign a path value to a variable in a >>> CMakeLists.txt, then open the CMakeLists.txt with the CMakeQtGui, it >>> will convert all the backslashes to forward-slashes, although this >>> might not be desired. >>> >>> For example, I have this in my CMakeLists.txt: >>> >>> IF( NOT DEFINED CALLIN_PATH ) >>> IF(WIN32) >>> SET( CALLIN_PATH "C:\\\\Intersystems\\\\Cache" CACHE PATH "Path to >>> the Mgr directory in ISC Cache" FORCE ) >>> ELSE(WIN32) >>> SET(CALLIN_PATH "/opt/cachesys" CACHE PATH "Path to the Mgr >>> directory in ISC Cache" FORCE ) >>> ENDIF(WIN32) >>> ENDIF( NOT DEFINED CALLIN_PATH ) >>> >>> On Win32, the Qt GUI shows CALLIN_PATH as "C://Intersystems//Cache" >>> and clicking "Configure" will store it in the CMake cache as >>> "C://Intersystems//Cache". >>> >>> This is undesired behavior because you may want to use the value of >>> that variable to generate, for instance, a .c or .cpp file. In my >>> case, I have this shdir.c.cmake: >>> >>> char shdir[256]="@CACHEMGRDIR@"; >>> >>> Doing: >>> >>> CONFIGURE_FILE( 3rdparty/src/isccache/shdir.c.cmake >>> ${LHDFAMILY_BINARY_DIR}/shdir.c ) >>> >>> Creates this shdir.c: >>> >>> char shdir[256]="C://Intersystems//Cache"; >>> >>> Which made my application behave oddly because the path is not valid >>> but the file still compiles. >>> >>> This behavior (replacing "\\" with "//") is consistent with what CMake >>> does when invoked from the command line. On the other hand, the (now >>> deprecated) CMakeSetup would not replace "\\" with "//", i. e. >>> CMakeSetup would show CALLIN_PATH as "C:\\Intersystems\\Cache" and >>> would generate this shdir.c, which is exactly what I want: >>> >>> char shdir[256]="C:\\Intersystems\\Cache"; >>> >>> In the end, I'm not sure if this is a bug in CMake and the Qt GUI, or >>> it was a bug in CMakeSetup, but the CMakeSetup behavior is what a >>> Win32 user would expect. >>> >>> (it's easy to work around the backslash-to-forwardslash substitution >>> with STRING, but it's not ideal and it's unexpected) >>> >>> -- >>> Pau Garcia i Quiles >>> http://www.elpauer.org >>> (Due to my workload, I may need 10 days to answer) >>> >>> >> >> >> >> > > > _______________________________________________ > 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 > -- Pau Garcia i Quiles http://www.elpauer.org (Due to my workload, I may need 10 days to answer) _______________________________________________ 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
