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