Michael Jackson said the following on 11/15/2010 11:56 AM:
Ahh. It is a bit clearer the tract you are taking. What I am suggesting is that you only have to run the "scanner" once and keep the results in CMake syntax files so that CMake can just simply re-use the list. As you add headers during development you can add headers to the lists that were generated. It is the first big lump of headers which is the daunting task. After that general maintenance of the CMake files is simple and straight forward.

For example in the folder:

+- Solution
|  +- Target 1
|  |  +- Sources
|  |  +- Headers
you can have a file Headers.cmake which contains

set (TARGET_1_HEADERS foo.h bar.h other.h)

which can be generated once by a script. And in the CMakelists.txt file for Target 1 you can have:
include (Headers/Headers.cmake)

It's not nearly that simple; "Target1" might be the login server, which uses header files from login/, chat/, etc, etc, etc. And these dependencies change frequently. The primary purpose is not to provide an SCM list of header files, but an active dependency list of header files so that IDE functions like "search this target only" work.

Our source layout has many "modules", but module != target. Any given target will have both source and header files from numerous modules/folders.

Sure, everytime we alter the #Include chain we're going to have to rebuild the project files from the CMakeLists, but with per-target dependency-generated header lists ... It becomes worth it.

- 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