[CMake] overriding ${PROJECTNAME}_BINARY_DIR before call to project()

Jean-Christophe Fillion-Robin jchris.fillionr at kitware.com
Wed Sep 28 11:58:46 EDT 2011


Hi Thomas,

You will find below few points that should help you to address your issues:

1) CTK build system can be build with the option CTK_SUPERBUILD set to OFF,
in that case the project will be built as a "regular" cmake project.

2) You could also build CTK normally (default option) providing VTK_DIR,
Log4Qt_DIR etc ... the CTK build system will understand these dependencies
are available and no project will be downloaded. This is somehow equivalent
to build CTK with CTK_SUPERBUILB OFF

3) If you want to make sure all binaries and libs are built in a custom
location, make sure you set:

CTK_CMAKE_ARCHIVE_OUTPUT_DIRECTORY
CTK_CMAKE_LIBRARY_OUTPUT_DIRECTORY

CTK_CMAKE_RUNTIME_OUTPUT_DIRECTORY

See https://github.com/commontk/CTK/blob/master/CMakeLists.txt#L91

Would be great if you could send request regarding CTK to
ctk-developers at commontk.org
More info here: http://www.commontk.org and
http://www.commontk.org/index.php/Getting_Started

Thanks
Jc

On Wed, Sep 28, 2011 at 11:35 AM, Thomas Wolf <thomas.wolf at vision.ee.ethz.ch
> wrote:

> Hi there,
>
> I have some serious trouble to get a makefile running, comprising of MITK,
> VTK, ITK, CTK, Log4Qt, DCMTK, GDCM, etc...
>
> Because most of the makefiles have some imperfections regarding being built
> under windows and x64 with the project environment of Visual Studio 2008, we
> use direct builds in the main makefile. This also helps to see all source
> code of the involved projects. The project requirements are also set in a
> way that we cannto use git or downloads, so the technique called
> "superbuild" is not applicable here.
>

> To get the involved projects to be built at the correct place, namely all
> created binaries in the CMAKE_BINARY_DIR location of the main makefile, i
> try to override e.g. CTK_BINARY_DIR before the inclusion of the CTK makefile
> via add_subdirectory.
>

> I have a hard time doing this, even with
>
> SET(CTK_BINARY_DIR ${CMAKE_BINARY_DIR} CACHE INTERNAL "" FORCE
> PARENT_SCOPE)
>
> the next call to project(CTK) overrides this and takes some other value.
> This value corresponds to the layout of the source tree apparently, but is
> of no use in this situation.
>
> How can I influence the value of CTK_BINARY_DIR before the call to the
> makefile?
>
> i tried to use project(CTK) in the toplevel makefile one directory up, but
> even then the values won't be taken.
>
> so this situation in
>
> mainmakefile:
>
> project(CTK)
> set(CTK_BINARY_DIR "some other place" CACHE INTERNAL "" FORCE PARENT_SCOPE
> )
> add_subdirectory(CTK)
>
> does not change a thing for CTK. Even when the CTK makefile (naturally)
> sets project(CTK), cmake does not complain or state something about double
> projects, but silently overwrites the CTK_BINARY_DIR with new values! So it
> respects the second call to 'project()', which in my opinion should be
> either
> a) reported as an error
> or
> b) the first call to project(CTK) should have priority
>
> Can someone help me?
>
> Regards,
> Thomas
> --
>
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at http://www.kitware.com/**
> opensource/opensource.html<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<http://www.cmake.org/Wiki/CMake_FAQ>
>
> Follow this link to subscribe/unsubscribe:
> http://www.cmake.org/mailman/**listinfo/cmake<http://www.cmake.org/mailman/listinfo/cmake>
>



-- 
+1 919 869 8849
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20110928/135b8dce/attachment.htm>


More information about the CMake mailing list