<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=utf-8">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><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;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 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;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Balloon Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.BalloonTextChar
        {mso-style-name:"Balloon Text Char";
        mso-style-priority:99;
        mso-style-link:"Balloon Text";
        font-family:"Tahoma","sans-serif";}
.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"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Thank you; unset works perfectly.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal" style="margin-top:6.0pt"><b><span style="font-size:11.0pt;font-family:"Arial","sans-serif";color:#1F497D;mso-fareast-language:EN-GB">Anthony Ette<br>
</span></b><span style="font-size:11.0pt;font-family:"Arial","sans-serif";color:#1F497D;mso-fareast-language:EN-GB">Control Systems Engineer<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Arial","sans-serif";color:#1F497D;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Arial","sans-serif";color:#1F497D;mso-fareast-language:EN-GB">Rolls-Royce Controls and Data Services</span><span style="font-size:11.0pt;font-family:"Arial","sans-serif";color:#1F497D;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Arial","sans-serif";color:#1F497D;mso-fareast-language:EN-GB">7661 N Perimeter Rd<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Arial","sans-serif";color:#1F497D;mso-fareast-language:EN-GB">Indianapolis, IN 46241<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Arial","sans-serif";color:#1F497D;mso-fareast-language:EN-GB">tel: +1 (317) 230-6943<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Arial","sans-serif";color:#1F497D;mso-fareast-language:EN-GB">mob: +1 (317) 864-7975<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Arial","sans-serif";color:#1F497D">email:
<a href="mailto:Anthony.R.Ette@controlsdata.com"><span style="color:blue">Anthony.R.Ette@controlsdata.com</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></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""> David Cole [mailto:DLRdave@aol.com]
<br>
<b>Sent:</b> Friday, August 21, 2015 8:17 AM<br>
<b>To:</b> Ette, Anthony (CDS)<br>
<b>Cc:</b> Parag Chandra; CMake@cmake.org<br>
<b>Subject:</b> Re: [CMake] Imported libraries and cross platform target names<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Find_library results are cached. If you want to re-find a potentially moved library every time you run, you would have to unset the cache variable prior to finding it.<br>
<br>
D<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><br>
On Thursday, August 20, 2015, Ette, Anthony (CDS) <<a href="mailto:Anthony.R.Ette@controlsdata.com">Anthony.R.Ette@controlsdata.com</a>> wrote:<o:p></o:p></p>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:#1F497D">Ok so I’ve got this going now (kind of) but FIND_LIBRARY doesn’t seem to update when the specified PATH changes.  Since we are developing and releasing
 our own static libraries on a separate development cycle from the final applications, a final application may use a different library release than another.  This means the application developer needs a method to point to different library releases (different
 locations on the filesystem).  We’ve always used environment variables for this and the developer issues a “workon” prior to developing an application.  The workon sets up all the necessary env vars but FIND_LIBRARY doesn’t update when the env var does.  For
 example, using either method 1 or 2 below to set an internal cmake variable doesn’t do the trick for the FIND_LIBRARY command to pick up a new libtest file in the new location.</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:#1F497D"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:#1F497D"> </span><o:p></o:p></p>
<p><span style="color:#1F497D">1)</span><span style="font-size:7.0pt;color:#1F497D">     
</span><span style="font-size:10.0pt;font-family:Consolas;color:navy">FILE</span><span style="font-size:10.0pt;font-family:Consolas;color:black">(</span><span style="font-size:10.0pt;font-family:Consolas;color:#7F5555">TO_CMAKE_PATH</span><span style="font-size:10.0pt;font-family:Consolas;color:black">
 $</span><span style="font-size:10.0pt;font-family:Consolas;color:#7F5555">ENV</span><span style="font-size:10.0pt;font-family:Consolas;color:black">{LIB_DIR} LIB_D)</span><o:p></o:p></p>
<p><span style="color:#1F497D">2)</span><span style="font-size:7.0pt;color:#1F497D">     
</span><span style="font-size:10.0pt;font-family:Consolas;color:navy">SET</span><span style="font-size:10.0pt;font-family:Consolas;color:black">(</span><span style="font-size:10.0pt;font-family:Consolas;color:#345981">LIB_D</span><span style="font-size:10.0pt;font-family:Consolas;color:black">
 $</span><span style="font-size:10.0pt;font-family:Consolas;color:#7F5555">ENV</span><span style="font-size:10.0pt;font-family:Consolas;color:black">{LIB_DIR}
</span><span style="font-size:10.0pt;font-family:Consolas;color:#7F5555">CACHE</span><span style="font-size:10.0pt;font-family:Consolas;color:black"> STRING
</span><span style="font-size:10.0pt;font-family:Consolas;color:#2A00FF">"lib dir"</span><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:#7F5555">FORCE</span><span style="font-size:10.0pt;font-family:Consolas;color:black">)</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:#1F497D"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none">
<span style="font-size:10.0pt;font-family:Consolas;color:navy">FIND_LIBRARY</span><span style="font-size:10.0pt;font-family:Consolas;color:black">(</span><span style="font-size:10.0pt;font-family:Consolas;color:#345981">libtest</span><span style="font-size:10.0pt;font-family:Consolas;color:black">    
</span><span style="font-size:10.0pt;font-family:Consolas;color:#7F5555">NAMES</span><span style="font-size:10.0pt;font-family:Consolas;color:black"> test    
</span><span style="font-size:10.0pt;font-family:Consolas;color:#7F5555">PATHS</span><span style="font-size:10.0pt;font-family:Consolas;color:black"> {LIB_D}
</span><span style="font-size:10.0pt;font-family:Consolas;color:#7F5555">NO_DEFAULT_PATH</span><span style="font-size:10.0pt;font-family:Consolas;color:black">)</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:#1F497D"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:#1F497D"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:#1F497D"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:#1F497D">I’ve also tried using the env string directly in the FIND_LIBRARY command as below, but the library being used in the build tree Makefiles still does
 not get updated.  I’ve also confirmed that the env var <i>is</i>  updated when CMake is rerun using MESSAGE command, so I believe it is merely a problem with triggering a change to the FIND_LIBRARY command.  How does this triggering work?  How can I force
 FIND_LIBRARY to check again each time CMake runs?</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:#1F497D"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.0pt;font-family:Consolas;color:navy">FIND_LIBRARY</span><span style="font-size:10.0pt;font-family:Consolas;color:black">(</span><span style="font-size:10.0pt;font-family:Consolas;color:#345981">libtest</span><span style="font-size:10.0pt;font-family:Consolas;color:black">    
</span><span style="font-size:10.0pt;font-family:Consolas;color:#7F5555">NAMES</span><span style="font-size:10.0pt;font-family:Consolas;color:black"> test    
</span><span style="font-size:10.0pt;font-family:Consolas;color:#7F5555">PATHS</span><span style="font-size:10.0pt;font-family:Consolas;color:black"> $</span><span style="font-size:10.0pt;font-family:Consolas;color:#7F5555">ENV</span><span style="font-size:10.0pt;font-family:Consolas;color:black">{LIB_DIR}
</span><span style="font-size:10.0pt;font-family:Consolas;color:#7F5555">NO_DEFAULT_PATH</span><span style="font-size:10.0pt;font-family:Consolas;color:black">)</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:#1F497D"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:#1F497D"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:#1F497D">Thanks,</span><o:p></o:p></p>
<div>
<p class="MsoNormal" style="margin-top:6.0pt;mso-margin-bottom-alt:auto"><b><span style="font-family:"Arial","sans-serif";color:#1F497D">Anthony Ette<br>
</span></b><span style="font-family:"Arial","sans-serif";color:#1F497D">Control Systems Engineer</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-family:"Arial","sans-serif";color:#1F497D"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-family:"Arial","sans-serif";color:#1F497D">Rolls-Royce Controls and Data Services</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-family:"Arial","sans-serif";color:#1F497D">7661 N Perimeter Rd</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-family:"Arial","sans-serif";color:#1F497D">Indianapolis, IN 46241</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-family:"Arial","sans-serif";color:#1F497D">tel: +1 (317) 230-6943</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-family:"Arial","sans-serif";color:#1F497D">mob: +1 (317) 864-7975</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-family:"Arial","sans-serif";color:#1F497D">email:
<a href="javascript:_e(%7B%7D,'cvml','Anthony.R.Ette@controlsdata.com');" target="_blank">
Anthony.R.Ette@controlsdata.com</a></span><o:p></o:p></p>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:#1F497D"> </span><o:p></o:p></p>
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><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""> Parag Chandra [mailto:<a href="javascript:_e(%7B%7D,'cvml','parag@ionicsecurity.com');" target="_blank">parag@ionicsecurity.com</a>]
<br>
<b>Sent:</b> Tuesday, August 18, 2015 3:08 PM<br>
<b>To:</b> Ette, Anthony (CDS); <a href="javascript:_e(%7B%7D,'cvml','CMake@cmake.org');" target="_blank">
CMake@cmake.org</a><br>
<b>Subject:</b> Re: [CMake] Imported libraries and cross platform target names</span><o:p></o:p></p>
</div>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<div>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.5pt;color:black">Yes, very similar. When I set out to convert our existing build system, which consists of many individual .sln and .vcxproj files, I got
 a requirement that the developers do not all want to work out of the same “uber” Xcode workspace/VS solution that contains all of the projects. They want to continue working with solutions that contain only the library of interest plus its associated test
 project. So when a developer runs CMake, a dependency like “timer” may refer to another CMake-generated project within the current build system, or it may refer to an already-built/downloaded dependency of the same name.</span><o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.5pt;color:black"><br>
</span><strong><span style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:black">Parag Chandra</span></strong><b><span style="font-size:10.5pt;color:black"><br>
</span></b><span style="font-size:10.5pt;color:black">Senior Software Engineer, Mobile Team<br>
Mobile: +1.919.824.1410<br>
<br>
<a href="https://ionic.com" target="_blank"><span style="text-decoration:none"><img border="0" id="_x0000_i1025" src="https://www.ionicsecurity.com/IonicSigHz.png"></span></a> <br>
<br>
Ionic Security Inc.<br>
1170 Peachtree St. NE STE 400, Atlanta, GA 30309 </span><o:p></o:p></p>
<table class="MsoNormalTable" border="0" cellpadding="0" style="background:white">
<tbody>
<tr>
<td nowrap="" style="padding:.75pt .75pt .75pt .75pt"></td>
<td nowrap="" valign="top" style="padding:.75pt .75pt .75pt .75pt"></td>
<td nowrap="" style="padding:.75pt .75pt .75pt .75pt"></td>
<td nowrap="" style="padding:.75pt .75pt .75pt .75pt"></td>
</tr>
<tr>
<td width="5" nowrap="" style="width:3.75pt;padding:.75pt .75pt .75pt .75pt"></td>
<td width="70" nowrap="" valign="top" style="width:52.5pt;padding:.75pt .75pt .75pt .75pt">
</td>
<td width="5" nowrap="" style="width:3.75pt;padding:.75pt .75pt .75pt .75pt"></td>
<td width="287" nowrap="" valign="top" style="width:215.25pt;padding:.75pt .75pt .75pt .75pt">
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.5pt;color:black"> </span><o:p></o:p></p>
</div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><b><span style="color:black">From:
</span></b><span style="color:black"><Ette>, "Anthony (CDS)" <<a href="javascript:_e(%7B%7D,'cvml','Anthony.R.Ette@controlsdata.com');" target="_blank">Anthony.R.Ette@controlsdata.com</a>><br>
<b>Date: </b>Tuesday, August 18, 2015 at 2:59 PM<br>
<b>To: </b>Parag Chandra <<a href="javascript:_e(%7B%7D,'cvml','parag@ionicsecurity.com');" target="_blank">parag@ionicsecurity.com</a>>, "<a href="javascript:_e(%7B%7D,'cvml','CMake@cmake.org');" target="_blank">CMake@cmake.org</a>" <<a href="javascript:_e(%7B%7D,'cvml','CMake@cmake.org');" target="_blank">CMake@cmake.org</a>><br>
<b>Subject: </b>RE: [CMake] Imported libraries and cross platform target names</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.5pt;color:black"> </span><o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:#1F497D">Thank you, I will take a look at find_library.  The static libraries are ones we build in-house but in a separate CMake-generated build system.  The
 reason we use a separate build system is because our common library code is used by all applications and, as such, is on a separate development cycle than the applications themselves.  In other words, while there may be advantages to combining them, I don’t
 think it would really make sense in our case….any thoughts?  Are you in a similar situation?</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:#1F497D"> </span><o:p></o:p></p>
<div>
<p class="MsoNormal" style="margin-top:6.0pt;mso-margin-bottom-alt:auto"><b><span style="font-family:"Arial","sans-serif";color:#1F497D">Anthony Ette<br>
</span></b><span style="font-family:"Arial","sans-serif";color:#1F497D">Control Systems Engineer</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-family:"Arial","sans-serif";color:#1F497D"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-family:"Arial","sans-serif";color:#1F497D">Rolls-Royce Controls and Data Services</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-family:"Arial","sans-serif";color:#1F497D">7661 N Perimeter Rd</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-family:"Arial","sans-serif";color:#1F497D">Indianapolis, IN 46241</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-family:"Arial","sans-serif";color:#1F497D">tel: +1 (317) 230-6943</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-family:"Arial","sans-serif";color:#1F497D">mob: +1 (317) 864-7975</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-family:"Arial","sans-serif";color:#1F497D">email:
<a href="javascript:_e(%7B%7D,'cvml','Anthony.R.Ette@controlsdata.com');" target="_blank">
Anthony.R.Ette@controlsdata.com</a></span><o:p></o:p></p>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:#1F497D"> </span><o:p></o:p></p>
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black"> Parag
 Chandra [<a href="javascript:_e(%7B%7D,'cvml','parag@ionicsecurity.com');" target="_blank">mailto:parag@ionicsecurity.com</a>]
<br>
<b>Sent:</b> Tuesday, August 18, 2015 2:45 PM<br>
<b>To:</b> Ette, Anthony (CDS); <a href="javascript:_e(%7B%7D,'cvml','CMake@cmake.org');" target="_blank">
CMake@cmake.org</a><br>
<b>Subject:</b> Re: [CMake] Imported libraries and cross platform target names</span><o:p></o:p></p>
</div>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:black"> </span><o:p></o:p></p>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.5pt;color:black">You just specify the “basename” of the library, so something like this:</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.5pt;color:black"> </span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.5pt;color:black">find_library (timer NAMES timer PATHS your/library/directory)</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.5pt;color:black">target_link_libraries(test timer)</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.5pt;color:black"> </span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.5pt;color:black">And Cmake takes care of the rest. It’s even easier if “timer” is also part of the same CMake-generated build system. In that case, the
 find_library isn’t even needed.</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.5pt;color:black"> </span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.5pt;color:black">Things do get a little more complicated when you want to distinguish between release/debug variants of the same library. For that you
 can use the DEBUG and OPTIMIZED keywords of target_link_libraries().</span><o:p></o:p></p>
</div>
<div>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.5pt;color:black"> </span><o:p></o:p></p>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.5pt;color:black"><br>
</span><strong><span style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:black">Parag Chandra</span></strong><b><span style="font-size:10.5pt;color:black"><br>
</span></b><span style="font-size:10.5pt;color:black">Senior Software Engineer, Mobile Team<br>
Mobile: +1.919.824.1410<br>
<br>
<a href="https://ionic.com" target="_blank"><span style="text-decoration:none"><img border="0" id="_x0000_i1026" src="https://www.ionicsecurity.com/IonicSigHz.png"></span></a> <br>
<br>
Ionic Security Inc.<br>
1170 Peachtree St. NE STE 400, Atlanta, GA 30309 </span><o:p></o:p></p>
<table class="MsoNormalTable" border="0" cellpadding="0" style="background:white">
<tbody>
<tr>
<td nowrap="" style="padding:.75pt .75pt .75pt .75pt"></td>
<td nowrap="" valign="top" style="padding:.75pt .75pt .75pt .75pt"></td>
<td nowrap="" style="padding:.75pt .75pt .75pt .75pt"></td>
<td nowrap="" style="padding:.75pt .75pt .75pt .75pt"></td>
</tr>
<tr>
<td width="5" nowrap="" style="width:3.75pt;padding:.75pt .75pt .75pt .75pt"></td>
<td width="70" nowrap="" valign="top" style="width:52.5pt;padding:.75pt .75pt .75pt .75pt">
</td>
<td width="5" nowrap="" style="width:3.75pt;padding:.75pt .75pt .75pt .75pt"></td>
<td width="287" nowrap="" valign="top" style="width:215.25pt;padding:.75pt .75pt .75pt .75pt">
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.5pt;color:black"> </span><o:p></o:p></p>
</div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><b><span style="color:black">From:
</span></b><span style="color:black"><Ette>, "Anthony (CDS)" <<a href="javascript:_e(%7B%7D,'cvml','Anthony.R.Ette@controlsdata.com');" target="_blank">Anthony.R.Ette@controlsdata.com</a>><br>
<b>Date: </b>Tuesday, August 18, 2015 at 2:29 PM<br>
<b>To: </b>"<a href="javascript:_e(%7B%7D,'cvml','CMake@cmake.org');" target="_blank">CMake@cmake.org</a>" <<a href="javascript:_e(%7B%7D,'cvml','CMake@cmake.org');" target="_blank">CMake@cmake.org</a>><br>
<b>Subject: </b>[CMake] Imported libraries and cross platform target names</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.5pt;color:black"> </span><o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:black">Given that add_library() produces a unique filename per platform (the “actual file name of the library built is constructed based on conventions of the
 native platform (such as <span style="background:#ECF0F3">lib<name>.a</span> or<span style="background:#ECF0F3"><name>.lib”</span>), how does one add the library to the final application without having to deal with the filename difference?  In other words,
 I’ve got one library that, by default, produces ‘libtest.a’ on Linux and ‘test.lib’ on Windows.  How can I add this imported library into the final application in a cross platform manner?  I know I can specify two different imported locations (see below),
 but it seems odd to me that Cmake – the cross-platform build env generator – doesn’t have a better native way of dealing with this….</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:black"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:black">The snippet below will work, but just seems wrong given the nature of what CMake is intended to do…is there a better way that I’m missing?!  If not, can
 I request that a future release of Cmake handle platform naming convention difference internally when invoking ADD_LIBRARY with the IMPORTED tag set?  Ok so, to be fair, Cmake can be used to cross compile and that certainly complicates my feature request but,
 when not cross compiling, CMake knows what platform it’s being executed on so it should be able to resolve static archive platform decorations internally.</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:black"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:8.0pt;font-family:Consolas;color:navy">ADD_LIBRARY</span><span style="font-size:8.0pt;font-family:Consolas;color:black">(</span><span style="font-size:8.0pt;font-family:Consolas;color:#345981">test</span><span style="font-size:8.0pt;font-family:Consolas;color:#7F5555">STATIC</span><span style="font-size:8.0pt;font-family:Consolas;color:#007F55">IMPORTED</span><span style="font-size:8.0pt;font-family:Consolas;color:black">)</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:8.0pt;font-family:Consolas;color:black">if(WIN32)</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none">
<span style="font-size:8.0pt;font-family:Consolas;color:navy">   SET_PROPERTY</span><span style="font-size:8.0pt;font-family:Consolas;color:black">(</span><span style="font-size:8.0pt;font-family:Consolas;color:#7F5555">TARGET</span><span style="font-size:8.0pt;font-family:Consolas;color:#345981">test</span><span style="font-size:8.0pt;font-family:Consolas;color:#7F5555">PROPERTY</span><span style="font-size:8.0pt;font-family:Consolas;color:#007F55">IMPORTED_LOCATION</span><span style="font-size:8.0pt;font-family:Consolas;color:black">
 ${LIB_D}/timer.lib)</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:8.0pt;font-family:Consolas;color:black">endif()</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:8.0pt;font-family:Consolas;color:black">if(UNIX)</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:8.0pt;font-family:Consolas;color:black">  
</span><span style="font-size:8.0pt;font-family:Consolas;color:navy">SET_PROPERTY</span><span style="font-size:8.0pt;font-family:Consolas;color:black">(</span><span style="font-size:8.0pt;font-family:Consolas;color:#7F5555">TARGET</span><span style="font-size:8.0pt;font-family:Consolas;color:#345981">test</span><span style="font-size:8.0pt;font-family:Consolas;color:#7F5555">PROPERTY</span><span style="font-size:8.0pt;font-family:Consolas;color:#007F55">IMPORTED_LOCATION</span><span style="font-size:8.0pt;font-family:Consolas;color:black">
 ${LIB_D}/libtimer.a)</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:8.0pt;font-family:Consolas;color:black">endif()</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:black"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:black">Thanks in advance,</span><o:p></o:p></p>
<p class="MsoNormal" style="margin-top:6.0pt;mso-margin-bottom-alt:auto"><b><span style="font-family:"Arial","sans-serif";color:black">Anthony Ette<br>
</span></b><span style="font-family:"Arial","sans-serif";color:black">Control Systems Engineer</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-family:"Arial","sans-serif";color:black"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-family:"Arial","sans-serif";color:black">Rolls-Royce Controls and Data Services</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-family:"Arial","sans-serif";color:black">7661 N Perimeter Rd</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-family:"Arial","sans-serif";color:black">Indianapolis, IN 46241</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-family:"Arial","sans-serif";color:black">tel: +1 (317) 230-6943</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-family:"Arial","sans-serif";color:black">mob: +1 (317) 864-7975</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-family:"Arial","sans-serif";color:black">email:
<a href="javascript:_e(%7B%7D,'cvml','Anthony.R.Ette@controlsdata.com');" target="_blank">
Anthony.R.Ette@controlsdata.com</a></span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:black"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.5pt;color:black">This e-mail (including attachments) contains contents owned by Rolls-Royce plc and its subsidiaries, affiliated companies or customers
 and covered by the laws of England and Wales, Brazil, US, or Canada (federal, state or provincial). The information contained in this email is intended to be confidential, may be legally privileged and subject to export controls which may restrict the access
 to and transfer of the information. If you are not the intended recipient, you are hereby notified that any retention, dissemination, distribution, interception or copying of this communication is strictly prohibited and may subject you to further legal action.
 Reply to the sender if you received this email by accident, and then delete the email and any attachments.
</span><o:p></o:p></p>
</div>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.5pt;color:black"><br>
______________________________________________________________________<br>
This email has been scanned.</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.5pt;color:black">This e-mail (including attachments) contains contents owned by Rolls-Royce plc and its subsidiaries, affiliated companies or customers
 and covered by the laws of England and Wales, Brazil, US, or Canada (federal, state or provincial). The information contained in this email is intended to be confidential, may be legally privileged and subject to export controls which may restrict the access
 to and transfer of the information. If you are not the intended recipient, you are hereby notified that any retention, dissemination, distribution, interception or copying of this communication is strictly prohibited and may subject you to further legal action.
 Reply to the sender if you received this email by accident, and then delete the email and any attachments.
</span><o:p></o:p></p>
</div>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.5pt;color:black"><br>
______________________________________________________________________<br>
This email has been scanned.</span><o:p></o:p></p>
</div>
<p class="MsoNormal">This e-mail (including attachments) contains contents owned by Rolls-Royce plc and its subsidiaries, affiliated companies or customers and covered by the laws of England and Wales, Brazil, US, or Canada (federal, state or provincial). The
 information contained in this email is intended to be confidential, may be legally privileged and subject to export controls which may restrict the access to and transfer of the information. If you are not the intended recipient, you are hereby notified that
 any retention, dissemination, distribution, interception or copying of this communication is strictly prohibited and may subject you to further legal action. Reply to the sender if you received this email by accident, and then delete the email and any attachments.
<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><br>
______________________________________________________________________<br>
This email has been scanned.<o:p></o:p></p>
</div>
This e-mail (including attachments) contains contents owned by Rolls-Royce plc and its subsidiaries, affiliated companies or customers and covered by the laws of England and Wales, Brazil, US, or Canada (federal, state or provincial). The information contained
 in this email is intended to be confidential, may be legally privileged and subject to export controls which may restrict the access to and transfer of the information. If you are not the intended recipient, you are hereby notified that any retention, dissemination,
 distribution, interception or copying of this communication is strictly prohibited and may subject you to further legal action. Reply to the sender if you received this email by accident, and then delete the email and any attachments.
</body>
</html>