I should probably clarify the situation (I'm not sure I provided enough
info up front). The larger dependencies like ITK are pre-built (I guess one
would assume this; we don't rebuild ITK or VTK with every build of our
project). So I thought it would be a simple problem of overwrite and then
restoring the ITK_DIR value at the right time (e.g. at the point of
find_package(ITK ...) for the modules in question). I feel like we've
almost got this working. There are some lingering issues that we're still
solving, but the respective modules seem to reference the correct versions
of ITK now. I guess I'm wondering whether this approach is doomed to fail
for a reason we haven't anticipated.

I'm doing the replacement as follows:

# This module uses an older version of ITK (3.2) than the rest of
# the project (4.31), so here we overwrite the ITK_DIR variable
# so that the correct version is found.
MESSAGE( STATUS "ITK_DIR_SECONDARY value:  "  ${ITK_DIR_SECONDARY})

MESSAGE( STATUS "ITK_DIR value (before overwrite):  "  ${ITK_DIR})
# Store the primary ITK directory in a temporary variable
set(ITK_DIR_PRIMARY ${ITK_DIR})
# Overwrite the ITK_DIR cache variable
set(ITK_DIR ${ITK_DIR_SECONDARY} CACHE STRING "The directory containing a
CMake configuration file for ITK" FORCE)
MESSAGE( STATUS "ITK_DIR value (after overwrite):  "  ${ITK_DIR})

FIND_PACKAGE(ITK 3.2)
IF(ITK_FOUND)
INCLUDE(${ITK_USE_FILE})
ELSE(ITK_FOUND)
MESSAGE(FATAL_ERROR "ITK not found. Please set ITK_DIR.")
ENDIF(ITK_FOUND)

# Restore the original (primary) ITK_DIR value
SET(ITK_DIR ${ITK_DIR_PRIMARY} CACHE STRING "The directory containing a
CMake configuration file for ITK" FORCE)
MESSAGE( STATUS "ITK_DIR value (after restore):  "  ${ITK_DIR})



On Tue, May 28, 2013 at 11:30 AM, Bill Lorensen <bill.loren...@gmail.com>wrote:

> I just re-read your question. Superbuild won't help.
>
>
>
> On Tue, May 28, 2013 at 11:29 AM, Bill Lorensen 
> <bill.loren...@gmail.com>wrote:
>
>> You could use cmake's superbuild facility to build both itk3 and itk4 in
>> a superbuild tree.
>>
>>
>>
>> On Tue, May 28, 2013 at 11:02 AM, John Drescher <dresche...@gmail.com>wrote:
>>
>>> On Tue, May 28, 2013 at 10:16 AM, Zamir Khan <zamir.k...@gmail.com>
>>> wrote:
>>> > We have a project where multiple modules rely on ITK. Most modules
>>> have been
>>> > upgraded to ITK 4.31, but one still relies on ITK 3.20 and it would
>>> take a
>>> > significant effort to upgrade it. In the meantime, is there a way for
>>> us to
>>> > keep these modules under a single top-level CMake and have them use
>>> their
>>> > respective versions of ITK?
>>> >
>>> > We thought we could just try to overwrite the ITK_DIR variable in the
>>> > appropriate place, but our first naive implementation of this did not
>>> work.
>>> >
>>> > Just wondering if someone has done this and whether it is possible
>>> (before
>>> > we dive deeper).
>>> >
>>>
>>> On windows I have several completely separate build trees with their
>>> own environment. This way I can build for different compiler versions,
>>> 32/64 bit and different versions of libraries like this. Inside the
>>> root of each build tree there is a link to the appropriate Visual
>>> Studio command prompt that has its default folder set to the build
>>> tree root. Also in the root there is a batch file that sets quite a
>>> few _DIR environment variables to help cmake find the correct compiled
>>> libraries. This has worked well for the 5 or so years that I have done
>>> it this way. I do not use INSTALL targets so none of the binaries end
>>> up in Program Files.
>>>
>>> John
>>> --
>>>
>>> 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
>>>
>>
>>
>>
>> --
>> Unpaid intern in BillsBasement at noware dot com
>>
>
>
>
> --
> Unpaid intern in BillsBasement at noware dot com
>
--

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

Reply via email to