Eric Noulard said the following on 11/11/2010 5:53 AM:
Having a lot of source code re-use from "source modules" that can be shared
between several projects is off course a necessary goal when your source
code base grows and the set of projects using those goes along the same curve.

My experience is in this case you may have mainly two kinds of re-use:

A) "external-like" re-use were the reused module is an autonomous
       [set of] library and executable.
      CMake may handle this using "ExternalProject_Add" module
      and the module may have his own CMakeLists.txt containing the toplevel
      PROJECT(...)

B) "internal-like" re-use. You may import the source but the imported
      source may not be compiled autonomously and should be plugged
      somewhere in the project source tree using the module.

      In this case ecah "internal-like" module may be shipped with
      a SourceDescription.cmake file which (manually) define appropriate
      set of CMake VAR (<MODULE>_SRC_FILES,<MODULE>_HEADER_FILES, ...)
      which can be included by the upper-level using project.

A-type project are edited (and source-controlled) on their own.
B-type project may be edited in any user project,
   how you handle source control in this case depends on your organisation
   and project inter-dependency management.

What I was hoping to achieve was a "Header Files" folder along side each
"Source Files" folder so that the headers were pertinent to any given
project within a solution.
Does CMake "source_group"  will do the jobs if each sub-project
is defining its list of<MODULE>_<KIND>_FILES?

Now, I admit I'm not a usual Visual Studio user so you are pretty right with
the fact I didn't face any performance issue on big project with VS.

I did work on relatively big source project with many imported modules
(external-like or internal-like) but we were not using any IDE  just
emacs/vi etc and a big set of Makefiles (no CMake usage at that time).
I mostly work with emacs/vi and - prior to CMake - Makefiles. I'm still mostly working with emacs/vi, but I also do a fair amount of work with Visual Studio and CodeBlocks, primarily when I need to test client interactions with server processes.

Manually maintaining duplicated lists of #includes is data duplication: Like manually maintaining dependency lists. If we had to do that with CMake, well I doubt we'd be having this conversation in the first place because we probably wouldn't be /using/ CMake.

So I don't understand why you would feel differently about having those lists automatically transcribed to the resultant IDE solution/project files.

- Oliver

_______________________________________________
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