Yes this looks like an option. Thanks for the lead. It is not quite what I was expecting.

This seems specific to Boost Libraries.  Which brings up 2 questions:

Is there a generic way do this for any third party source tree?
Is there going to be CMAKE variable name resolution clash potential without namespace resolution within CMake (or is there already this problem or have I missed something)?

What I would like to do is set (please bear with me as I am a complete nube to CMake)

BUILD_PROJECTS=none

Then do

add_subdirectory(boost_source_dir)

project( my_exe )
add_executable( my_exe mysource.cpp )
add_library( boost_filesystem   SHARED)
#An IMPORTED library target references a library file located outside the project. No rules are generated to build it. <- Too bad about this last statement

or

add_dependencies( my_exe boost_filesystem )


Is there any mechanism for project level resolution of third party source targets such as in bjam boost//boost_filesystem

project
    : requirements <library>../build//boost_filesystem
      <library>/boost/system//boost_system
      <hardcode-dll-paths>true
    ;


project boost/filesystem
    : source-location ../src
: usage-requirements # pass these requirement to dependents (i.e. users)
      <link>shared:<define>BOOST_FILESYSTEM_DYN_LINK=1
      <link>static:<define>BOOST_FILESYSTEM_STATIC_LINK=1
    ;

And boost_filesystem's use:

project
    : requirements
      <library>/boost/filesystem//boost_filesystem
      <toolset>msvc:<asynch-exceptions>on
    ;

where some syntax like:

add_subdirectory(boost_source_dir PROJECT boost )

add_dependencies( my_exe boost//boost_filesystem )

or

add_library( boost//boost_filesystem   SHARED)


allowing the specification and namespace resolution of the 3rdParty (boost) library

I know above does not exist as my example question shows, but if it does in some other form what is it?

Brian

On Sat, Dec 5, 2009 at 3:45 PM, Mike Jackson <mike.jack...@bluequartz.net > wrote:
I _think_ you _might_ be able to set the BUILD_PROJECTS to
"file_system;system" then do the "add_subdirectory()".
 Give it a shot and see what happens.

_________________________________________________________
Mike Jackson                  mike.jack...@bluequartz.net
BlueQuartz Software                    www.bluequartz.net
Principal Software Engineer                  Dayton, Ohio



On Sat, Dec 5, 2009 at 4:15 PM, Brian Davis <bitmi...@gmail.com> wrote:
>
> I have used boost jam before and there was a mechanism to build only what > you need by specifying dependencies within the boost libraries. bjam would > then run off calculate deps and build only what I needed. In CMake is there > such a feature to specify a third party library and specify only the targets
> you need to build as dependencies of my build target?
>
> i.e. can I use
>
> add_subdirectory( lib/3rdParty/Win32/boost-cmake-1_41_0 ./boost )
>
> then create a target that only uses say boost_filesystem and only have that > built? Or do I need to build the world to get a handful of needed dll's that
> are actually used in my project?
>
> --
> Brian J. Davis
>
>
> _______________________________________________
> 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
>



--
Brian J. Davis

_______________________________________________
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