In http://www.cmake.org/pipermail/cmake/2011-November/047250.html I wrote
"I can't reorganize the source tree on the developers, so I'm making do by putting the enclosing CMakeLists.txt next to all the projects: toplevel/trunk/CMakeLists.txt which is checked out to toplevel/CMakeLists.txt It does add_subdirectory(../libfoo libfoo) add_subdirectory(../libbar libbar) add_subdirectory(../baz baz) This has the possible advantage that one can have multiple "top levels" (say, one for server code, and one for client). I don't know how many shops suffer from this svn layout, but I'll probably add an example covering it anyway for completeness once I'm sure it doesn't explode in practice." Right, well, I found out where it explodes in practice. Here's an example: http://code.google.com/p/winezeug/source/browse/trunk/cmake_examples/ex7/ The problem comes when using the cdt generator. We can't use -DECLIPSE_CDT4_GENERATE_SOURCE_PROJECT=TRUE since there are more than one source project, but the source project that generates is really trivial, so I generate one for each source directory myself with a bit of shell: for dir in demo libsrc do sed "s/PROJNAME/_$dir/" < ../skeleton.project > ../$dir/.project done before or after running cmake. It all works great, the source projects all show up, the project builds... BUT when you edit a source file and tell eclipse to rebuild, it just sits there. It doesn't know that the source projects are related to the build project. It looks like adding a link does the trick: --- .project.old 2011-11-11 22:51:56.797674441 +0000 +++ .project 2011-11-11 22:52:25.380913484 +0000 @@ -113,5 +113,11 @@ <type>2</type> <location>/home/dank/winezeug/cmake_examples/ex7/demo</location> </link> + <link> + <name>[Source directory 2]</name> + <type>2</type> + <location>/home/dank/winezeug/cmake_examples/ex7/libsrc</location> + </link> + </linkedResources> </projectDescription> After I add those lines to the .project, saved changes in libsrc do seem to cause a rebuild the next time you click "build project". So, I guess to support this style of project, the cdt generator should call cmExtraEclipseCDT4Generator::AppendLinkedResource() once for each call in my outer CMakeLists.txt like add_subdirectory(../libsrc libsrc). I have no idea how to make that happen inside the cdt generator. I could kludge it in the shell script that runs cmake, but then it would break whenever the project was updated and cmake rebuilt the project automatically. Was http://public.kitware.com/Bug/view.php?id=9978 / https://github.com/rpavlik/CMake/commit/10aece0d8199409fbb695478eab2c60545fcf310 related at all? - Dan -- 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