<div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><br>
It&#39;s a bit clearer to me  now ;-)<br>
Reading between the lines I get the feeling that you&#39;re probably better<br>
off using just a single project anyway.<br>
A developer doesn&#39;t need to continuously update the whole project when<br>
working on his subproject. Building the whole thing once in his working<br>
copy should suffice.<br>
<br></blockquote><div>Most of those projects (and future related projects) are not interdependent. I had a repository with everything inside before (using MSVC10 projects files) but it don&#39;t suit the developpement as each project really need a separate repository with separate history and separate teams working on it. I know I could use branches but that would make things harder when managing the different projects separately.</div>
<div><br></div><div>They have to be separate. That&#39;s not a question to me anymore.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Personally, I have not yet gained any experience with<br>
EXTERNAL_PROJECT(), so I cannot really help you there. If your<br>
subsystems are *really* stand-alone pieces of software, then you should<br>
create different CMake projects for them. However, like I said, I get<br>
the feeling that that&#39;s not the case in your situation.<br></blockquote><div><br></div><div>It is this very case. I need them to be separate projects, sometime linked because sometime you need some dependencies and maybe those dependencies are in the same &quot;family of projects&quot; or something. Those dependencies might be from outside too, but those projects have to be isolated.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>
You might consider to use multiple PROJECT() commands inside your<br>
source tree. It will make your life slightly easier when you later<br>
decide you do want to split things up.<br></blockquote><div><br></div><div>That&#39;s already what I do. Well that&#39;s what&#39;s i&#39;m trying but until now I can&#39;t find a way to say to CMake where are the other projects. I think I&#39;m misusing EXTERNAL_PROJECT() but I&#39;m not sure how.</div>
<div>I&#39;ll get back on this issue in the week, see if I can make EXTERNAL_PROJECT() work as I need. I really think I don&#39;t have all the pieces of the puzzle. I&#39;m reading the other thread about how to make libraries works correctly with CMake and I think I don&#39;t know a lot about what&#39;s really required. </div>
<div><br></div><div>Anyway, thanks for your help.</div><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
&gt;&gt;&gt; On 3-12-2010 at 13:13, in message<br>
&lt;<a href="mailto:AANLkTimfWeyEJP%2BMAQKZcg-7a92beBvxhGO0BXRLjP9x@mail.gmail.com">AANLkTimfWeyEJP+MAQKZcg-7a92beBvxhGO0BXRLjP9x@mail.gmail.com</a>&gt;, Klaim<br>
<div><div></div><div class="h5">&lt;<a href="mailto:mjklaim@gmail.com">mjklaim@gmail.com</a>&gt; wrote:<br>
&gt; Thanks for pointing EXTERNAL_PROJECT , I&#39;ve looked at it but can&#39;t<br>
&gt; understand how to get the path from outside.<br>
&gt; I&#39;ll try again see if I missed something about this feature and get<br>
back to<br>
&gt; you.<br>
&gt;<br>
&gt; The projects are almost all independent and I need to allow working<br>
with a<br>
&gt; clone of one subproject without retrieving everything, just it<br>
dependencies.<br>
&gt;<br>
&gt; I&#39;ll try to be more clear :<br>
&gt;  - there is a common language used to describe a &quot;Sequence&quot; (it&#39;s<br>
not<br>
&gt; important so just understand that the important projects in the<br>
framework<br>
&gt; will require this)<br>
&gt;  - there are tools, all made to manipulate the sequences, so each<br>
project is<br>
&gt; independant (separate repo) but some projects need to use other<br>
projects, so<br>
&gt; we need to provide their path in their Cmake<br>
&gt;  - there are players that are like tools but are just interpreter<br>
projects -<br>
&gt; anyway they are as indpendant or dependant as tools<br>
projects/subrepos<br>
&gt;  - now I have central repository (&quot;default&quot;) that is just meant to<br>
gather<br>
&gt; everything together; That&#39;s for people wanting everything but they<br>
are few.<br>
&gt; Most subproject developers will just get their dependencies and work<br>
from<br>
&gt; their, without updating the dependencies while developping. If you<br>
get the<br>
&gt; &quot;default&quot; repo, you have synchronized repos togethere (read: we use<br>
specific<br>
&gt; tags for each subrespo). So the default repository is mainly for the<br>
&gt; developers needing to touch everything. Like me.<br>
&gt;<br>
&gt; Is it more clear?<br>
&gt;<br>
&gt; On Fri, Dec 3, 2010 at 11:16, Marcel Loose &lt;<a href="mailto:loose@astron.nl">loose@astron.nl</a>&gt; wrote:<br>
&gt;<br>
&gt;&gt; &gt;&gt;&gt; On 2-12-2010 at 16:12, in message<br>
&gt;&gt;<br>
&gt;<br>
</div></div>&lt;AANLkTimJU5WAv=<a href="mailto:EKxnbmkpLnL7dN_c%2BXsSgKOEFm5Le6@mail.gmail.com">EKxnbmkpLnL7dN_c+XsSgKOEFm5Le6@mail.gmail.com</a>&lt;EKxnbmkpLnL7dN_c%<br>
&gt; <a href="mailto:2BXsSgKOEFm5Le6@mail.gmail.com">2BXsSgKOEFm5Le6@mail.gmail.com</a>&gt;&gt;,<br>
<div><div></div><div class="h5">&gt;&gt; Klaim<br>
&gt;&gt; &lt;<a href="mailto:mjklaim@gmail.com">mjklaim@gmail.com</a>&gt; wrote:<br>
&gt;&gt; &gt; Hi!<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; I&#39;m currently trying to understand how to use CMake for a<br>
non-trivial<br>
&gt;&gt; setup<br>
&gt;&gt; &gt; of multiple-projects-framework. I&#39;m a beginner at CMake (as<br>
developer<br>
&gt;&gt; I<br>
&gt;&gt; &gt; mean, not as library user).<br>
&gt;&gt; &gt; I&#39;ve read the docs and I tried to read the Ogre project CMake<br>
&gt;&gt; organization<br>
&gt;&gt; &gt; but it&#39;s a bit overkill for my project I think. Anyway, I&#39;m lost<br>
&gt;&gt; here<br>
&gt;&gt; &gt; because<br>
&gt;&gt; &gt; I think I don&#39;t understand all I need to achieve what I want.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; My project is made of several sub projects that are all in<br>
separate<br>
&gt;&gt; &gt; (mercurial) repositories.<br>
&gt;&gt; &gt; There is one &quot;default&quot; repository that use the mercurial subrepos<br>
&gt;&gt; feature to<br>
&gt;&gt; &gt; gather everything in one big framework project.<br>
&gt;&gt; &gt; You can see the repos there :<br>
&gt;&gt; &gt; <a href="http://code.google.com/p/art-of-sequence/source/browse/" target="_blank">http://code.google.com/p/art-of-sequence/source/browse/</a> (it&#39;s an<br>
open<br>
&gt;&gt; source<br>
&gt;&gt; &gt; project but Idon&#39;t have the website ready yet to explain the<br>
&gt;&gt; concept)<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; The Cmake organisation I want to setup I&#39;ve already seen<br>
somewhere<br>
&gt;&gt; else I<br>
&gt;&gt; &gt; think, but I&#39;m a bit lost with all the ways to do it and I think<br>
I&#39;ll<br>
&gt;&gt; make<br>
&gt;&gt; &gt; something very bad if I don&#39;t ask here for help here.<br>
&gt;&gt; &gt; I need each project (subrepo) to be available separately and can<br>
be<br>
&gt;&gt; built<br>
&gt;&gt; &gt; giving to Cmake the paths of the project&#39;s dependencies.<br>
&gt;&gt; &gt; And I need the default repo to provide the paths.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; So I have this folder organisation in the default repo (that<br>
gather<br>
&gt;&gt; all<br>
&gt;&gt; &gt; subrepos) :<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; /language                       # the intermediate language<br>
(AOSL)<br>
&gt;&gt; &gt; definition project/subrepo<br>
&gt;&gt; &gt; /tools/                            # the folder that will contain<br>
all<br>
&gt;&gt; the<br>
&gt;&gt; &gt; tools projects/subrepos<br>
&gt;&gt; &gt; /tools/aosdesigner           # a tool project/subrepo (in fact<br>
the<br>
&gt;&gt; most<br>
&gt;&gt; &gt; important) - an executable<br>
&gt;&gt; &gt; /tools/aoslcpp                 # a tool project/subrepo that is a<br>
&gt;&gt; dependency<br>
&gt;&gt; &gt; of aosdesigner - a library (shared)<br>
&gt;&gt; &gt; /players/                         # the folder that will contain<br>
all<br>
&gt;&gt; the<br>
&gt;&gt; &gt; players (AOSL interpreters)<br>
&gt;&gt; &gt; /players/aoswebplayer     # a player project/subrepo<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; There will be additional &quot;tools&quot; and &quot;players&quot; projects, and I<br>
think<br>
&gt;&gt; I&#39;ll<br>
&gt;&gt; &gt; need another folder for &quot;exporters&quot; but that&#39;s another subject.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Here, what I&#39;m trying to do, is to have a CMakeLists.txt for each<br>
&gt;&gt; project<br>
&gt;&gt; &gt; (but &quot;/language&quot; that is not source code but xsd, xml and text).<br>
&gt;&gt; &gt; Those projects will need the path of dependencies, like<br>
&gt;&gt; &quot;/tools/aosdesigner&quot;<br>
&gt;&gt; &gt; will require the path of &quot;/tools/aoslcpp&quot;.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Then I want to set the paths of each project at the root level.<br>
It<br>
&gt;&gt; would be<br>
&gt;&gt; &gt; perfect if I could symply get the name of all folders in<br>
&quot;/tools/&quot;<br>
&gt;&gt; and<br>
&gt;&gt; &gt; &quot;/players/&quot;<br>
&gt;&gt; &gt; and simply provide them to the CMakeLists.txt of the sub<br>
projects.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Is there a simple example of this kind of organisation out there<br>
that<br>
&gt;&gt; I<br>
&gt;&gt; &gt; could be inspered of?<br>
&gt;&gt; &gt; Do you have some guidance to give me to setup all this?<br>
&gt;&gt; &gt; I tried to write this organisation but I&#39;m clueless on how to<br>
gather<br>
&gt;&gt; and<br>
&gt;&gt; &gt; provide the paths of each projects...<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Once I understand how to do this I think I&#39;ll use this<br>
organisation<br>
&gt;&gt; for<br>
&gt;&gt; &gt; another big project too.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Any help would be really.....helpful :)<br>
&gt;&gt; &gt; Thanks for reading. Tell me if I was not clear on some points.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Klaim<br>
&gt;&gt;<br>
&gt;&gt; Hi Klaim,<br>
&gt;&gt;<br>
&gt;&gt; It&#39;s not completely clear to me how tightly your subprojects are<br>
&gt;&gt; coupled.<br>
&gt;&gt;<br>
&gt;&gt; I would suggest you&#39;d create a CMake project for each of your<br>
&gt;&gt; subprojects and use the EXTERNAL_PROJECT feature to import the<br>
required<br>
&gt;&gt; subproject. UNLESS: your subprojects cannot really exist as<br>
stand-alone<br>
&gt;&gt; products, but are just parts of one overall project. In that case,<br>
I<br>
&gt;&gt; would choose to create just one CMake project.<br>
&gt;&gt;<br>
&gt;&gt; HTH,<br>
&gt;&gt; Marcel Loose.<br>
&gt;&gt;<br>
<br>
<br>
</div></div></blockquote></div><br>