Thanks JC,

That's how we did it but we were wondering if there was another straight 
forward solution without calling GOFIGURE2 as an External Project with 
-DUSE_SUPERBUILD:BOOL=OFF.

So we will stay with this "SuperBuild style" but we might have to meet the "CTK 
SuperBuild style" at some point.
We will let you know if we have any question regarding the implementation in 
CTK!

Have a nice Hackfest!

Nicolas


Le Feb 7, 2011 à 11:03 PM, Jean-Christophe Fillion-Robin a écrit :

> Hi Nicolas, 
> 
> To properly use the superbuild feature, you could structure your project as 
> described below:
> 
> <PROJ-SRC>/CMakeLists.txt
> <PROJ-SRC>/Superbuild.cmake
> <PROJ-SRC>/CMakeExternals/External-VTK.cmake
> 
> Within CMakeLists.txt, by default the variable USE_SUPERBUILD will be ON.
> If this variable is ON, it means a file named, for example Superbuild.cmake 
> will have to be included.
> Then, within superbuild.cmake, the "ExternalProject_add" command will have to 
> be invoked. 
> 
> You will find below some hints regarding the content of these different file:
> 
> CMAKELISTS.TXT
> PROJECT( MYPROJECT )
> ...
> OPTION( USE_SUPERBUILD "Use SuperBuild" ON )
> ...
> IF( USE_SUPERBUILD )
>   INCLUDE( "${CMAKE_CURRENT_SOURCE_DIR}/Superbuild.cmake" )
>   RETURN()
> ENDIF( USE_SUPERBUILD )
> ...
> FIND_PACKAGE( VTK )??? //NOT WORKING
> ...
> 
> 
> Superbuild.cmake
> 
> # Compute -G arg for configuring external projects with the same CMake 
> generator:
> IF(CMAKE_EXTRA_GENERATOR)
>   SET(gen "${CMAKE_EXTRA_GENERATOR} - ${CMAKE_GENERATOR}")
> ELSE()
>   SET(gen "${CMAKE_GENERATOR}")
> ENDIF()
> 
> INCLUDE(CMakeExternals/External-VTK.cmake)
> 
> ExternalProject_Add(GoFigure2
>    DOWNLOAD_COMMAND ""
>    CMAKE_GENERATOR ${gen}
>    CMAKE_ARGS
>       -DUSE_SUPERBUILD:BOOL=OFF
>        .....
>   SOURCE_DIR ${GoFigure2_SOURCE_DIR}
>   BINARY_DIR ${GoFigure2_BINARY_DIR}/GoFigure2-build
>   DEPENDS
>      VTK
>   )
> 
> Looking at both Slicer and CTK, you will also be able to grab some code ... 
> 
> Nevertheless, note that CTK buildsystem is a little bit more complex since 
> it's able to include the external project dynamically depending on the 
> enabled libraries, plugin ... 
> 
> 
> Thanks
> Jc
> 
> On Mon, Feb 7, 2011 at 6:01 PM, Nicolas Rannou 
> <[email protected]> wrote:
> Hello,
> 
> I would like to set up a "superbuild" for my project.
> I would like it to be as clean/basic as possible.
> 
> Let's say I want to build VTK as my "ExternalProject". How should I proceed 
> to link it to my current project.
> 
> My current project requires VTK to be built.
> So FIND_PACKAGE cannot work. (vtk source code not there during the 
> configuration step)
> And I didn't get any success manually setting VTK_DIR, VTK_INCLUDE_DIRS, etc. 
> at the end of my External-VTK.cmake file. Is it the way to go?
> 
> How should I proceed to do it?
> Is there any tutorial on the net? (I couldn't find any)
> I had a look at CTK's and Slicer's superbuilds but we would like something 
> more basic and straight forward. Is it possible?
> Is there a special option in CMake/ExternalProjects to be enabled or anything 
> we can do about it?
> 
> A workaround was to build "myProject" as an ExternalProject linked to the 
> "VTK ExternalProject", and to turn off USE_SUPERBUILD but I don't really like 
> this solution.
> 
> Any help would be greatly appreciated,
> 
> Thanks
> 
> CMAKELISTS.TXT
> PROJECT( MYPROJECT )
> ...
> OPTION( USE_SUPERBUILD "Use SuperBuild" ON )
> ...
> IF( USE_SUPERBUILD )
>   INCLUDE( "${GOFIGURE2_SOURCE_DIR}/CMake/SuperBuild/External-VTK.cmake" )
> ENDIF( USE_SUPERBUILD )
> ...
> FIND_PACKAGE( VTK )??? //NOT WORKING
> ...
> 
> External-VTK.cmake
> 
> set(proj VTK)
> ...
>   ExternalProject_Add(${proj}
>     SOURCE_DIR ${CMAKE_BINARY_DIR}/${proj}
>     BINARY_DIR ${proj}-build
>     GIT_REPOSITORY "${git_protocol}://vtk.org/VTK.git"
>     GIT_TAG "origin/release"
>     CMAKE_GENERATOR ${gen}
>     CMAKE_ARGS
>       ${ep_common_args}
>       -DBUILD_EXAMPLES:BOOL=OFF
>       -DBUILD_SHARED_LIBS:BOOL=ON
>       -DCMAKE_CXX_FLAGS:STRING=${ep_common_cxx_flags}
>       -DCMAKE_C_FLAGS:STRING=${ep_common_c_flags}
>       -DVTK_USE_PARALLEL:BOOL=ON
>       -DVTK_DEBUG_LEAKS:BOOL=${USE_VTK_DEBUG_LEAKS}
>       -DVTK_USE_RPATH:BOOL=ON
>       -DVTK_INSTALL_LIB_DIR:PATH=${MyProject_INSTALL_LIB_DIR}
>       ${VTK_QT_ARGS}
>       ${VTK_MAC_ARGS}
>     INSTALL_COMMAND ""
>     DEPENDS
>       ${VTK_DEPENDENCIES}
>     )
> ...
> set(VTK_DIR ${CMAKE_BINARY_DIR}/${proj}-build)??? // NOT WORKING
> 
> _______________________________________________
> 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
> 
> 
> 
> -- 
> Direct: 1-518-836-2174
> Ext: 304

_______________________________________________
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