Hi Michael,

Thank you for the follow-up and sorry for my late response!  I
appreciate your suggestions as they basically summarize the problems
I've been having...


On Wed, Dec 8, 2010 at 21:25, Michael Hertling <mhertl...@online.de> wrote:
> Yes, absolutely, with such relations among executables and libraries,
> their source directories should be siblings instead of descendants, and
> the libraries' testing executables can be conveniently integrated using
> ADD_TEST() without interfering with the main executables. However, when
> your project grows and, hence, the number of source directories in the
> project's root increases, say 10+, you should consider to organize them
> further, e.g. like


For example, I've reached around 10 source directories when I posted
my first message to the mailing list a couple of weeks back.  I
probably should have thought how to organize everything when I first
started -- but at least I'm thinking about it now instead of "much"
later!


> or whichever organizational criteria apply best, so the root directory
> doesn't fill with countless source directories. Apart from that, there
> is no need to have the top-level CMakeLists.txt create the main{1,2,3}
> executables by itself; just add a CMakeLists.txt file in each of their
> source directories as you do for the libraries, and use
>
> ADD_SUBDIRECTORY(main1)
> ADD_SUBDIRECTORY(main2)
> ADD_SUBDIRECTORY(main3)
>
> at the top level to enable them. In this way, you've a CMakeLists.txt
> file in each of your project's source directories which does exactly
> what needs to be done there, and the whole project is covered by the
> top-level CMakeLists.txt with minimal assumptions w.r.t. the source
> directories.


I see.  That makes sense to me; thank you!


> IMO, there is no reason to configure with lower-level CMakeLists.txt
> files at first and switch to a top-level CMakeLists.txt later. Instead,
> start right away with one CMakeLists.txt file per source directory and
> one top-level CMakeLists.txt, and whenever a new source directory with
> its own CMakeLists.txt is added to your project, just add an according
> ADD_SUBDIRECTORY() at the top level, too. So, you will always have a
> clean and regular configurational setup without the need to bother
> with different starting points for configuring your project.


Ok -- thank you for this; I'll definitely take your advice!

Thank you for your suggestions; I realize my question wasn't directly
related to CMake syntax and more generally to how to use CMake
properly for a project of this size.  Thank you for taking the time to
explain it to me; hopefully it has benefited others as well!

Ray
_______________________________________________
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