[CMake] CMake built with Apache stdcxx has problems?
Attila Nagy
nagy.attila at yahoo.com
Tue Apr 6 15:36:34 EDT 2010
Hi Bill,
thanks for looking into this! I'll give your suggestions a try in the following days.
Hereby I cc Steve, so he's aware of the outcome of this issue too.
Thanks again,
Attila
--- On Tue, 4/6/10, Bill Hoffman <bill.hoffman at kitware.com> wrote:
> From: Bill Hoffman <bill.hoffman at kitware.com>
> Subject: Re: [CMake] CMake built with Apache stdcxx has problems?
> To: "Attila Nagy" <nagy.attila at yahoo.com>
> Cc: cmake at cmake.org
> Date: Tuesday, April 6, 2010, 8:30 PM
> Attila Nagy wrote:
> > Here is the file:
> >
> www.orl.szote.u-szeged.hu/~attila/Slicer3Config-stdcxx.cmake
> >
> > Here is another version of that same file, from the
> same sources, when CMake is compiled with STLport4, for
> reference (this is the file from my current Slicer3-build
> dir):
> >
> www.orl.szote.u-szeged.hu/~attila/Slicer3Config-stlport.cmake
> >
>
> OK, I think we found the problem...
>
>
> http://viewvc.slicer.org/viewcvs.cgi/trunk/Libs/CMakeLists.txt?rev=12514&view=markup
>
> Macro in CMake\Slicer3PersistenceMacros.cmake
>
> http://viewvc.slicer.org/viewcvs.cgi/trunk/CMake/Slicer3PersistenceMacros.cmake?rev=6774&view=log
>
> Seems that it is from a work around for CMake older than
> 2.6:
>
> #-----------------------------------------------------------------------------
> # Temporary hack to set/get persistent values accross
> subdirs until 2.6 comes
> # Neither set_source_file_properties nor set(... INTERNAL
> FORCE) would work
>
> #-----------------------------------------------------------------------------
> macro(slicer3_set_persistent_property property_name)
> set(_file
> "${CMAKE_BINARY_DIR}/persistent/${property_name}")
> file(WRITE "${_file}" "${ARGN}")
> #set(__${property_name} ${value} CACHE INTERNAL ""
> FORCE)
> endmacro(slicer3_set_persistent_property property_name
> value)
>
> #-----------------------------------------------------------------------------
> macro(slicer3_get_persistent_property property_name
> var_name)
> set(_file
> "${CMAKE_BINARY_DIR}/persistent/${property_name}")
> if(EXISTS "${_file}")
> file(READ "${_file}" ${var_name})
> else(EXISTS "${_file}")
> set(${var_name})
> endif(EXISTS "${_file}")
> #set(${var_name} ${__${property_name}})
> endmacro(slicer3_get_persistent_property property_name
> var_name)
>
>
> You could change that macro to not use file
> WRITE. IF you want to track this down in
> CMake, you could try some small examples with a CMake built
> with both versions of stdc++. You could use
> file(WRITE and file(READ to write/read some lists from a
> file.
>
> But, sounds like it is time to remove the temporary hack in
> Slicer...
>
>
> -Bill
>
More information about the CMake
mailing list