As an option you may create .def file which lists functions from static library as exported. This will force linker to treat them as undefined and link with all dependencies. However this requires some actions and works only for quite stable libs.<br>
We employed this approach when we had no control over static library.<br><br>Regards,<br>Yuri<br><br><div class="gmail_quote">On Mon, Sep 10, 2012 at 11:54 AM, Petr Kmoch <span dir="ltr">&lt;<a href="mailto:petr.kmoch@gmail.com" target="_blank">petr.kmoch@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Eric.<br>
<br>
Many thanks for your reply.<br>
<div class="im"><br>
On Mon, Sep 10, 2012 at 9:49 AM, Eric Noulard &lt;<a href="mailto:eric.noulard@gmail.com">eric.noulard@gmail.com</a>&gt; wrote:<br>
&gt; 2012/9/10 Petr Kmoch &lt;<a href="mailto:petr.kmoch@gmail.com">petr.kmoch@gmail.com</a>&gt;:<br>
&gt;&gt; Hi all.<br>
&gt;&gt;<br>
&gt;&gt; I&#39;m on Windows, and I need a DLL composed of multiple static<br>
&gt;&gt; libraries, any of which can define dllexport functions not otherwise<br>
&gt;&gt; referenced in the DLL. The problem is that the Visual Studio linker<br>
&gt;&gt; does not provide flags to link an entire static library (i.e. there is<br>
&gt;&gt; no equivalent to ld&#39;s --whole-archive). I tried /OPT:NOREF, it didn&#39;t<br>
&gt;&gt; help.<br>
&gt;&gt;<br>
&gt;&gt; The only solution I can think of is to link all of the static<br>
&gt;&gt; library&#39;s object files instead of the library itself (I verified<br>
&gt;&gt; manually that this works). I cannot put source files into the DLL<br>
&gt;&gt; directly, because the DLL is C and the static lib(s) are Fortran.<br>
&gt;<br>
&gt; Why can&#39;t you do that?<br>
&gt; I do not use fortran since a long time ago but I do not see why you can&#39;t do<br>
&gt;<br>
&gt; add_library(mymixedllib foo.c blah.f90)<br>
<br>
</div>Because I need the Fortran VS project to be a .vfproj, and that only<br>
works for pure-Fortran targets.<br>
<div class="im"><br>
&gt;<br>
&gt;<br>
&gt;&gt; My question is thus: is there a way to retrieve the list of a target&#39;s<br>
&gt;&gt; object files from cmake?<br>
&gt;<br>
&gt; Since CMake 2.8.9 you can build &quot;OBJECT&quot; library,<br>
&gt; see:<br>
&gt; cmake --help-command add_library<br>
&gt;<br>
&gt; [...]<br>
&gt;          add_library(&lt;name&gt; OBJECT &lt;src&gt;...)<br>
&gt;<br>
&gt;        creates a special &quot;object library&quot; target.  An object library compiles<br>
&gt;        source files but does not archive or link their object files into a<br>
&gt;        library.  Instead other targets created by add_library or<br>
&gt;        add_executable may reference the objects using an expression of the<br>
&gt;        form $&lt;TARGET_OBJECTS:objlib&gt; as a source, where &quot;objlib&quot; is the<br>
&gt;        object library name.  For example:<br>
&gt;<br>
&gt;          add_library(... $&lt;TARGET_OBJECTS:objlib&gt; ...)<br>
&gt;          add_executable(... $&lt;TARGET_OBJECTS:objlib&gt; ...)<br>
&gt;<br>
&gt;        will include objlib&#39;s object files in a library and an executable<br>
&gt;        along with those compiled from their own sources.<br>
&gt; [...]<br>
<br>
</div>A hundred thanks! That&#39;s precisely what I need. On to ask for an<br>
upgrade our company-wide cmake installation, then.<br>
<span class="HOEnZb"><font color="#888888"><br>
Petr<br>
</font></span><div class="HOEnZb"><div class="h5">--<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>