[CMake] Need some directions for non-trivial setup

Marcel Loose loose at astron.nl
Fri Dec 3 05:16:44 EST 2010


>>> On 2-12-2010 at 16:12, in message
<AANLkTimJU5WAv=EKxnbmkpLnL7dN_c+XsSgKOEFm5Le6 at mail.gmail.com>, Klaim
<mjklaim at gmail.com> wrote: 
> Hi!
> 
> I'm currently trying to understand how to use CMake for a non-trivial
setup
> of multiple-projects-framework. I'm a beginner at CMake (as developer
I
> mean, not as library user).
> I've read the docs and I tried to read the Ogre project CMake
organization
> but it's a bit overkill for my project I think. Anyway, I'm lost
here
> because
> I think I don't understand all I need to achieve what I want.
> 
> My project is made of several sub projects that are all in separate
> (mercurial) repositories.
> There is one "default" repository that use the mercurial subrepos
feature to
> gather everything in one big framework project.
> You can see the repos there :
> http://code.google.com/p/art-of-sequence/source/browse/ (it's an open
source
> project but Idon't have the website ready yet to explain the
concept)
> 
> The Cmake organisation I want to setup I've already seen somewhere
else I
> think, but I'm a bit lost with all the ways to do it and I think I'll
make
> something very bad if I don't ask here for help here.
> I need each project (subrepo) to be available separately and can be
built
> giving to Cmake the paths of the project's dependencies.
> And I need the default repo to provide the paths.
> 
> So I have this folder organisation in the default repo (that gather
all
> subrepos) :
> 
> /language                       # the intermediate language (AOSL)
> definition project/subrepo
> /tools/                            # the folder that will contain all
the
> tools projects/subrepos
> /tools/aosdesigner           # a tool project/subrepo (in fact the
most
> important) - an executable
> /tools/aoslcpp                 # a tool project/subrepo that is a
dependency
> of aosdesigner - a library (shared)
> /players/                         # the folder that will contain all
the
> players (AOSL interpreters)
> /players/aoswebplayer     # a player project/subrepo
> 
> There will be additional "tools" and "players" projects, and I think
I'll
> need another folder for "exporters" but that's another subject.
> 
> Here, what I'm trying to do, is to have a CMakeLists.txt for each
project
> (but "/language" that is not source code but xsd, xml and text).
> Those projects will need the path of dependencies, like
"/tools/aosdesigner"
> will require the path of "/tools/aoslcpp".
> 
> Then I want to set the paths of each project at the root level. It
would be
> perfect if I could symply get the name of all folders in "/tools/"
and
> "/players/"
> and simply provide them to the CMakeLists.txt of the sub projects.
> 
> Is there a simple example of this kind of organisation out there that
I
> could be inspered of?
> Do you have some guidance to give me to setup all this?
> I tried to write this organisation but I'm clueless on how to gather
and
> provide the paths of each projects...
> 
> Once I understand how to do this I think I'll use this organisation
for
> another big project too.
> 
> Any help would be really.....helpful :)
> Thanks for reading. Tell me if I was not clear on some points.
> 
> Klaim

Hi Klaim,

It's not completely clear to me how tightly your subprojects are
coupled.

I would suggest you'd create a CMake project for each of your
subprojects and use the EXTERNAL_PROJECT feature to import the required
subproject. UNLESS: your subprojects cannot really exist as stand-alone
products, but are just parts of one overall project. In that case, I
would choose to create just one CMake project.

HTH,
Marcel Loose.


More information about the CMake mailing list