[CMake] Text user configuration (features, flags) that is more persistent than cache?
Christian Arnault
arnault at lal.in2p3.fr
Fri Jun 22 03:20:25 EDT 2012
Hi,
What is mentioned here has been implemented in our configuration system
(CMT previously implemented in pure C++/make and currently
re-implemented on top of CMake)
The principle is to add on top of the build system (say CMake, but this
could be plain make, or Waf) a layer that describes the configuration of
your software project in terms of:
- structure (directory structure and functional relationships ie. the
use relationships) as a graph of projects and packages
- constituents (libs, apps, generated docs) and their sources
- parameters for both the build, the packaging and the run
- conditions (tags, contexts) that could be used to select operational
situations
This configuration used to be described in a text file (per package +
per project) filling in a in-memory-database, used to setup the various
build tools, as well as the production tools and to offer query features
to the developer/user.
Nowadays, this approach is being re-implemented using the CMake language
to profit its multiplatform & paralellism capacity.
This approach answers the point you raise here, but also another recent
point on the a-priori knowledge of what/where/how is available in a
given possible large software base.
I would love that the database approach would be natively offered by
CMake (thus offering the pre/post build query facilities)
<http://www.cmtsite.org/>
<git://github.com/ChristianArnault/CMT.git>
Regards,
Christian
Le 21/06/2012 22:25, Ateljevich, Eli a écrit :
>
> Hi,
>
> I was wondering if there is a best practice for providing a file for
> user configuration decisions (options, unique flags) that will be more
> persistent than the cache? I have a project where a dozen or two
> algorithmic decisions have to be made. I find that this is just enough
> that cache overwrites cause me fear. I could do this on the
> environment, I suppose, but most of my users prefer a small list of
> name-value pairs for decisions that are pretty stable for them.
>
> I couldn't find anything on this. The concept is alluded to by a 2001
> email about INCLUDE by Bill Hoffman:
>
> It could be used like this:
>
> INCLUDE (${PROJECT_BINARY_DIR}/UserCacheSettings.txt OPTIONAL)
>
> This would allow the user to pre-set values for the Cache file, but still
>
> be able to delete the Cache file.
>
> But I wasn't sure about the mechanics of this. When would it have to
> be read to fulfill this role and what does "pre-set" really mean in
> light of that as far as precedence if there are duplicate entries?
> Wouldn't everything that could be set have to be something that will
> also appear in CMakeCache.txt? I assume the format would be just like
> CMakeCache.txt? ...which would be ideal.
>
> Thanks,
>
> Eli
>
>
>
> --
>
> 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
--
--------------------------------------------
| Christian Arnault |
| LAL Bat 200 pièce 03a |
| 91405 Orsay CEDEX |
| phone : (33) 1 64 46 84 24 |
| gsm : (33) 6 77 27 62 30 |
| fax : (33) 1 69 07 94 04 |
| e-mail : christian.arnault at lal.in2p3.fr |
--------------------------------------------
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20120622/913e6ccc/attachment-0001.htm>
More information about the CMake
mailing list