[CMake] Handling library dependencies and minimizing duplicated include_directories

Aaron_Wright at selinc.com Aaron_Wright at selinc.com
Mon Mar 22 20:47:15 EDT 2010


So... no easy answer for this? The only reason I bring this up is that 
I've looked at the cmake version of boost, and it requires a library of 
several cmake files full of macros and functions that help get their 
project organization to work with cmake. I've had to resort to the same 
kind of thing. ADD_LIBRARY just didn't cut it. I like that cmake allows me 
to get to the functionality I want, but it seems that it becomes a 
scripting language at that point, and cmake is certainly not a scripting 
language. Boost for example has numerous helper functions or macros for 
using named arguments with macros and functions. (They are all very 
cleaver and I totally use them in my project.) Another example is that my 
project has functions and macros for adding the dependencies between 
libraries, dependencies like include directories, link directories, and 
link libraries. Is there something on the horizon for CMake to address 
these issues? Or have they been addressed, but I've missed them?

On a side note, I see questions for this kind of thing all the time on 
this mailing list. I never see a very good answer. Perhaps a wiki page or 
a blog could be made covering project organization. It could perhaps cut 
down on repeat questions.

-------------------------------------------------------------
Aaron Wright




From:
Aaron_Wright at selinc.com
To:
Michael Jackson <mike.jackson at bluequartz.net>
Cc:
cmake at cmake.org
Date:
03/22/2010 07:47 AM
Subject:
Re: [CMake] Handling library dependencies and minimizing duplicated 
include_directories
Sent by:
cmake-bounces at cmake.org



You mean in the case of a master CMakelists.txt file I assume? That does 
work, and I like that functionality. The same kind of thing works for 
Visual Studio solutions as well. I just don't think this fits the usual 
paradigm of building my developers and I are used to. 

For example, if they want to work on a library, they would instinctively 
go to that library and make a build folder and run CMake. They would not 
think to go to the top of the directory tree, create a build folder in a 
location they never make folders or files or do any work, and then 
progress down the build folder's directory path to the library they want 
to build. Which is in a completely different location than the source 
files of the library, which they'll soon be modifying. 

This would all work though, so it is a valid solution. 

-------------------------------------------------------------
Aaron Wright 



From: 
Michael Jackson <mike.jackson at bluequartz.net> 
To: 
Aaron_Wright at selinc.com 
Cc: 
cmake at cmake.org 
Date: 
03/22/2010 07:32 AM 
Subject: 
Re: [CMake] Handling library dependencies and minimizing duplicated 
include_directories




If you are using any of the "Makefile" generators, you can simply 
drill down into the folder of the library you want to build and issue 
the "make" command. The library, and anything that it depends on will 
be built (or rebuilt) accordingly.
___________________________________________________________
Mike Jackson                      www.bluequartz.net


On Mar 22, 2010, at 9:52 AM, Aaron_Wright at selinc.com wrote:

> I've always been a little confused by FIND_PACKAGE and those "*- 
> config.cmake" files. So much so that I didn't use them in my build 
> system at all. The main question I have is that I have several 
> developers and numerous little and big libraries. Because the whole 
> project is so big it would be prohibitive for them all to work from 
> a master CMakeLists.txt file at the top. I want each developer to be 
> able to go the folder of the library they want to work on today and 
> start building there. I want all the libraries that library depends 
> on to be built or rebuilt if anything has changed in addition to 
> building the current library.
>
> I've been unable to find a simple solution to this problem using 
> CMake, which makes me wonder if what I'm doing is off the wall, but 
> it sounds so normal to me. I see these "*-config.cmake" files but it 
> seems they are generated from a CMakelist.txt file, which wouldn't 
> make any sense, because I'm not going to have a developer go to each 
> dependant library and build it seperately so that the "*- 
> config.cmake" can be generated so that he can have those variables 
> back in the library he really wants to build.
>
> What am I missing?
>
> -------------------------------------------------------------
> Aaron Wright
>
>
>
> From:
> Daniel Lidström <daniel.lidstrom at sbg.se>
> To:
> Cc:
> <cmake at cmake.org>
> Date:
> 03/20/2010 01:25 PM
> Subject:
> Re: [CMake] Handling library dependencies and minimizing 
> duplicated        include_directories
> Sent by:
> cmake-bounces at cmake.org
>
>
>
>
> > If the projects UMC3D, GFL etc can be used independently, but
> > are all "under your control", then you shouldn't write
> > FindUMC3D.cmake, FindGFL.cmake etc files, but create
> > UMC3D-config.cmake, GFL-config.cmake etc files instead. Read
> > the documentation of the FIND_PACKAGE command, especially the
> > paragraphs about the "config mode". You'll also find many
> > discussions on this in the archives of this list.
>
> Thanks a lot for your help Mike!
>
> Regards,
>
> Daniel Lidström
> Stockholm, Sweden
> _______________________________________________
> 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
>
> _______________________________________________
> 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

_______________________________________________
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20100322/9bf7f884/attachment-0001.htm>


More information about the CMake mailing list