<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Hi,<br>
    <br>
    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)<br>
    <br>
    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:<br>
    <br>
    - structure (directory structure and functional relationships ie.
    the use relationships) as a graph of projects and packages <br>
    - constituents (libs, apps, generated docs) and their sources<br>
    - parameters for both the build, the packaging and the run<br>
    - conditions (tags, contexts) that could be used to select
    operational situations<br>
    <br>
    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.<br>
    <br>
    Nowadays, this approach is being re-implemented using the CMake
    language to profit its multiplatform &amp; paralellism capacity.<br>
    <br>
    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.<br>
    <br>
    I would love that the database approach would be natively offered by
    CMake (thus offering the pre/post build query facilities)<br>
    <br>
    <a class="moz-txt-link-rfc2396E" href="http://www.cmtsite.org/">&lt;http://www.cmtsite.org/&gt;</a><br>
    &lt;git://github.com/ChristianArnault/CMT.git&gt;<br>
    <br>
    Regards,<br>
    Christian<br>
    <br>
    <br>
    <br>
    Le 21/06/2012 22:25, Ateljevich, Eli a &eacute;crit&nbsp;:
    <blockquote
cite="mid:67CC54752B3F8D43ACD7E3AD455162630B6208C856@mrsbmapp20306.ad.water.ca.gov"
      type="cite">
      <meta http-equiv="Content-Type" content="text/html;
        charset=ISO-8859-1">
      <meta name="Generator" content="Microsoft Word 12 (filtered
        medium)">
      <style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:"Courier New";}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
      <div class="WordSection1">
        <p class="MsoNormal">Hi,<o:p></o:p></p>
        <p class="MsoNormal">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. <o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">I couldn&#8217;t find anything on this. The
          concept is alluded to by a 2001 email about INCLUDE by Bill
          Hoffman:<o:p></o:p></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">It
            could be used like this:<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;"><o:p>&nbsp;</o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">INCLUDE
            (${PROJECT_BINARY_DIR}/UserCacheSettings.txt OPTIONAL)<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;"><o:p>&nbsp;</o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">This
            would allow the user to pre-set values for the Cache file,
            but still<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">be
            able to delete the Cache file.<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;"><o:p>&nbsp;</o:p></span></p>
        <p class="MsoNormal">But I wasn&#8217;t sure about the mechanics of
          this. When would it have to be read to fulfill this role and
          what does &#8220;pre-set&#8221; really mean in light of that as far as
          precedence if there are duplicate entries? Wouldn&#8217;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? &#8230;which would be ideal.<o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">Thanks,<o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">Eli<o:p></o:p></p>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">--

Powered by <a class="moz-txt-link-abbreviated" href="http://www.kitware.com">www.kitware.com</a>

Visit other Kitware open-source projects at <a class="moz-txt-link-freetext" href="http://www.kitware.com/opensource/opensource.html">http://www.kitware.com/opensource/opensource.html</a>

Please keep messages on-topic and check the CMake FAQ at: <a class="moz-txt-link-freetext" href="http://www.cmake.org/Wiki/CMake_FAQ">http://www.cmake.org/Wiki/CMake_FAQ</a>

Follow this link to subscribe/unsubscribe:
<a class="moz-txt-link-freetext" href="http://www.cmake.org/mailman/listinfo/cmake">http://www.cmake.org/mailman/listinfo/cmake</a></pre>
    </blockquote>
    <br>
    <br>
    <pre class="moz-signature" cols="72">-- 
--------------------------------------------
| Christian Arnault                        |
| LAL Bat 200 pi&egrave;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  : <a class="moz-txt-link-abbreviated" href="mailto:christian.arnault@lal.in2p3.fr">christian.arnault@lal.in2p3.fr</a> |
--------------------------------------------
</pre>
  </body>
</html>