[CMake] Need some directions for non-trivial setup

Klaim mjklaim at gmail.com
Thu Dec 2 10:12:47 EST 2010


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


More information about the CMake mailing list