Actually there is a way. But you should be careful to track in what scope particular flags are defined.<br><br>If you don&#39;t put a lot of stuff into directory scopes you can modify CMAKE_&lt;LANG&gt;_FLAGS and etc before calling to add_library/add_executable call. You can even completely replace them. As I understand calling set() command takes preference over cached variable and its value is restored when CMake leaves directory (if I&#39;m right).<br>
<br>For example, we have a &quot;treat warnings as errors&quot; policy for 100+ projects, so we have /WX option in CMAKE_CXX_FLAGS. But for some legacy projects which we don&#39;t want to touch we use:<br># Don&#39;t treat warnings as errors.<br>
string(REPLACE &quot;/WX&quot; &quot;&quot; CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})<br><br>As I said, you should be aware of the place where particular flag comes from. If you use directory-scope or source-file scope (or whatever) properties, you should modify them instead.<br>
<br><div class="gmail_quote">On Wed, Mar 30, 2011 at 10:00 PM, Whitcomb, Mr. Tim <span dir="ltr">&lt;<a href="mailto:Tim.Whitcomb@nrlmry.navy.mil">Tim.Whitcomb@nrlmry.navy.mil</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Shortening to reduce wall-of-text:<br>
<br>
I have a Fortran project with a top-level CMakeLists.txt file with 47 add_subdirectory calls.  Three of the subdirectories require a different set of preprocessor definitions and compiler flags than the other 47.  I can add the preprocessor definitions, but am having trouble with the compiler flags.  I need to have a completely different set in those subdirectories, so COMPILE_FLAGS target property won&#39;t work as it augments what&#39;s already there.<br>

<br>
How can I replace (not extend) the compiler flags for these few subdirectories?<br>
<font color="#888888"><br>
Tim<br>
</font><div><div></div><div class="h5"><br>
&gt; -----Original Message-----<br>
&gt; From: <a href="mailto:cmake-bounces@cmake.org">cmake-bounces@cmake.org</a><br>
&gt; [mailto:<a href="mailto:cmake-bounces@cmake.org">cmake-bounces@cmake.org</a>] On Behalf Of Whitcomb, Mr. Tim<br>
&gt; Sent: Friday, March 25, 2011 3:18 PM<br>
&gt; To: &#39;<a href="mailto:cmake@cmake.org">cmake@cmake.org</a>&#39;<br>
&gt; Subject: [CMake] Replacing compiler flags for certain project<br>
&gt; subdirectories<br>
&gt;<br>
&gt; I&#39;m in the process of adding Cmake-build capability to a<br>
&gt; Fortran project that currently follows a traditional<br>
&gt; recursive-make build structure.  I&#39;ve converted all the<br>
&gt; makefiles to CMakeLists.txt files and can now produce all the<br>
&gt; target libraries and executables with their dependencies<br>
&gt; correctly recognized.  These dependencies have made a huge<br>
&gt; difference in allowing us to perform parallel builds and have<br>
&gt; the project ready to go *much* faster than before.  I have a<br>
&gt; top-level CMakeLists.txt file that contains a few library<br>
&gt; searches (e.g. LAPACK, BLAS) and then an add_subdirectory<br>
&gt; call for each subdirectory in the project.  Each subdirectory<br>
&gt; corresponds to a library and/or an executable.<br>
&gt;<br>
&gt; Now that the listing files contain all the sources files they<br>
&gt; need, my current task is to go through and set the proper<br>
&gt; compiler/preprocessor flags to match the original makefiles.<br>
&gt; We have several directories in our source tree that are<br>
&gt; auxiliary libraries that we store in our Subversion<br>
&gt; repository and build as part of our regular build process.<br>
&gt; The libraries that are built in these directories are<br>
&gt; compiled with different compiler flags and different<br>
&gt; preprocessor definitions than the rest of the project.  I&#39;ve<br>
&gt; been able to handle the preprocessor definitions by using<br>
&gt; add_definitions in the CMakeLists.txt files in the<br>
&gt; lower-level directories.  I see based on reading through some<br>
&gt; past threads (including the recent &quot;Different CMAKE_CXX_FLAGS<br>
&gt; for different executables&quot;) on this list and on some<br>
&gt; StackOverflow questions that the COMPILE_FLAGS target<br>
&gt; property is very close to what I need (and actually *was*<br>
&gt; what I needed in several cases) but only appends flags to<br>
&gt; those currently  in use.  What I need is to be able to define<br>
&gt; a new set of compile flags (i.e. &quot;forget everything you were<br>
&gt; using before and use THIS set in this directory&quot;).<br>
&gt;<br>
&gt; I&#39;ve started going through the documentation for Building<br>
&gt; External Projects[*] but the first line states that &quot;[a]n<br>
&gt; &quot;external project&quot; is one that you can get the source code<br>
&gt; for, but does not readily build with a simple<br>
&gt; ADD_SUBDIRECTORY call in your CMakeLists.txt file.&quot;  This<br>
&gt; feels like it&#39;s designed to solve a slightly different<br>
&gt; problem than what I&#39;m trying to do - I have an<br>
&gt; add_subdirectory call in my CMakeLists.txt file - is the<br>
&gt; proper fix for this issue to make the pieces that require<br>
&gt; different flags external projects?  Will making some of these<br>
&gt; libraries external projects mess with the dependency calculation?<br>
&gt;<br>
&gt; I&#39;m just getting started and trying to wrap my head around<br>
&gt; the options available.  What is the standard way of dealing<br>
&gt; with this issue?  Is there anything I&#39;m missing?  Thank you<br>
&gt; for your assistance!<br>
&gt;<br>
&gt; Tim<br>
&gt; [w]<br>
&gt;<br>
&gt; [*]<br>
&gt; <a href="http://www.kitware.com/products/html/BuildingExternalProjectsW" target="_blank">http://www.kitware.com/products/html/BuildingExternalProjectsW</a><br>
&gt; ithCMake2.8.html<br>
_______________________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Please keep messages on-topic and check the CMake FAQ at: <a href="http://www.cmake.org/Wiki/CMake_FAQ" target="_blank">http://www.cmake.org/Wiki/CMake_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.cmake.org/mailman/listinfo/cmake" target="_blank">http://www.cmake.org/mailman/listinfo/cmake</a><br>
</div></div></blockquote></div><br>