<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","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;}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:"Arial","sans-serif";
        color:#7F7F7F;
        font-weight:bold;
        font-style:normal;
        text-decoration:none none;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@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]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>I believe that is the defined behavior.&nbsp; Usually, people would use add_definitions() to add the flags before creating the target.&nbsp; If you have one target per subdirectory, you don&#8217;t have to worry about removing them afterwards:<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'><o:p>&nbsp;</o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>CMakeLists.txt:<o:p></o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>&nbsp; &nbsp;add_definitions(/foo)<o:p></o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'><o:p>&nbsp;</o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>&nbsp;&nbsp; add_subdirectory(baz)<o:p></o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>&nbsp;&nbsp; add_subdirectory(qux)<o:p></o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'><o:p>&nbsp;</o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>baz/CMakeLists.txt<o:p></o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>&nbsp;&nbsp; add_definitions(/bar)<o:p></o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>&nbsp;&nbsp; add_executable(baz baz.cpp)<o:p></o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'><o:p>&nbsp;</o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>qux/CMakeLists.txt<o:p></o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>&nbsp;&nbsp; add_executable(qux qux.cpp)<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'><o:p>&nbsp;</o:p></span></b></p><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'><o:p>&nbsp;</o:p></span></b></p><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>baz gets the compiler flags &#8220;/foo /bar&#8221;, qux only gets &#8220;/foo&#8221;.<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'><o:p>&nbsp;</o:p></span></b></p><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'><o:p>&nbsp;</o:p></span></b></p><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'><o:p>&nbsp;</o:p></span></b></p><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>As an aside, I ran into a similar issue, but with Linker Flags in the cache.&nbsp; To overcome that, I wrote a few functions to encapsulate the writing of flags and handle checking for duplicates.&nbsp; You could certainly do something similar with properties:<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'><o:p>&nbsp;</o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>############################################################<o:p></o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>## Cache Set Helper Functions<o:p></o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>############################################################<o:p></o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>function(AppendIfMissing _outVar _inVar _value)<o:p></o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>&nbsp; string(REGEX REPLACE &quot; &quot; &quot;;&quot; _inList &quot;${${_inVar}}&quot;)<o:p></o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>&nbsp; list(FIND _inList &quot;${_value}&quot; _pos)<o:p></o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'><o:p>&nbsp;</o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>&nbsp; if(${_pos} EQUAL -1)<o:p></o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>&nbsp;&nbsp;&nbsp; set(${_outVar} &quot;${${_inVar}} ${_value}&quot; PARENT_SCOPE)<o:p></o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>&nbsp; else()<o:p></o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>&nbsp;&nbsp;&nbsp; set(${_outVar} &quot;${${_inVar}}&quot; PARENT_SCOPE)<o:p></o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>&nbsp; endif()<o:p></o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>endfunction(AppendIfMissing)<o:p></o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'><o:p>&nbsp;</o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>function(CheckAndAppendCacheForce _varName _value _type )<o:p></o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>&nbsp; AppendIfMissing(_outvar ${_varName} ${_value})<o:p></o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'><o:p>&nbsp;</o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>&nbsp; foreach(_arg IN LISTS ARGN)<o:p></o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>&nbsp;&nbsp;&nbsp; set(_desc &quot;${_desc} ${_arg}&quot;)<o:p></o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>&nbsp; endforeach()<o:p></o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'><o:p>&nbsp;</o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>&nbsp; set(${_varName} &quot;${_outvar}&quot; CACHE ${_type} &quot;${_desc}&quot; FORCE)<o:p></o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>endfunction(CheckAndAppendCacheForce)<o:p></o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'><o:p>&nbsp;</o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>function(CheckAndAppendCache _varName _value _type )<o:p></o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>&nbsp; AppendIfMissing(_outvar ${_varName} ${_value})<o:p></o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'><o:p>&nbsp;</o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>&nbsp; foreach(_arg IN LISTS ARGN)<o:p></o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>&nbsp;&nbsp;&nbsp; set(_desc &quot;${_desc} ${_arg}&quot;)<o:p></o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>&nbsp; endforeach()<o:p></o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'><o:p>&nbsp;</o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>&nbsp; set(${_varName} &quot;${_outvar}&quot; CACHE ${_type} &quot;${_desc}&quot;)<o:p></o:p></span></b></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'>endfunction(CheckAndAppendCache)<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'><o:p>&nbsp;</o:p></span></b></p><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'><o:p>&nbsp;</o:p></span></b></p><p class=MsoNormal><b><span style='font-size:9.0pt;font-family:"Arial","sans-serif";color:#666666'>Aaron Meadows</span></b><span style='font-size:9.0pt;font-family:"Arial","sans-serif";color:#666666'><o:p></o:p></span></p><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#7F7F7F'><o:p>&nbsp;</o:p></span></b></p><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> cmake-bounces@cmake.org [mailto:cmake-bounces@cmake.org] <b>On Behalf Of </b>Robert Dailey<br><b>Sent:</b> Monday, February 06, 2012 3:58 PM<br><b>To:</b> CMake ML<br><b>Subject:</b> [CMake] COMPILE_FLAGS property that appends instead of replaces<o:p></o:p></span></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>I would like to set the COMPILE_FLAGS property multiple times on the same target through set_target_properties(), however only the last call seems to persist. Previous flags set get overridden. Is this the correct behavior? If so, is there a way to make this property append instead of replace on the same target?<br clear=all><o:p></o:p></p><div><p class=MsoNormal><o:p>&nbsp;</o:p></p></div><div><p class=MsoNormal>---------<o:p></o:p></p></div><p class=MsoNormal>Robert Dailey<o:p></o:p></p></div></body></html><br>
This email was sent to you by Thomson Reuters, the global news and information company. Any views expressed in this message are those of the individual sender, except where the sender specifically states them to be the views of Thomson Reuters.