<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;}
/* 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;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.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">I have a large static library comprised of C, C++, Fortran, and Ada source files.<o:p></o:p></p>
<p class="MsoNormal">I have a number of C, C++, Fortran, and Ada executables linking against this library.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">When CMake generates the link statements in link.txt, the implicit libraries selected to be linked against from the possibilities located in CMakeFiles/CMake[lang]Compiler.cmake are always incorrect.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">For example, in an Ada executable, the implicit libraries selected to be linked against are only C and Fortran, not Ada, and some of the libraries selected are superfluous while other necessary libraries are not included at all. Also,
the directory where the Fortran libraries are found is not pulled from the implicit link directory possibilities, whereas the C one is.<br>
<br>
<o:p></o:p></p>
<p class="MsoNormal">For a Fortran executable, the libraries selected to be linked against are found from C, Fortran, C++, and Ada, but once again the library selection seems random and the directory containing the Ada libraries is absent from the link statement.
This is especially disconcerting since those libraries are in /usr/lib[64].<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Why is CMake’s link statement logic regarding implicit libraries completely imploding when executables link against a static library comprised of multiple languages?<o:p></o:p></p>
<p class="MsoNormal">Does anyone know of some good hacks/kludges to circumvent CMake’s behavior?<o:p></o:p></p>
</div>
</body>
</html>