<div class="gmail_quote"><div><div class="Wj3C7c">On Wed, Feb 27, 2008 at 8:08 PM, Christopher Harvey &lt;<a href="mailto:arbuckle911@gmail.com" target="_blank">arbuckle911@gmail.com</a>&gt; wrote:<br><div class="gmail_quote">
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div>Philip Lowman wrote:<br>
&gt; On Wed, Feb 27, 2008 at 7:13 PM, Christopher Harvey<br>
</div><div><div></div><div>&gt; &lt;<a href="mailto:arbuckle911@gmail.com" target="_blank">arbuckle911@gmail.com</a> &lt;mailto:<a href="mailto:arbuckle911@gmail.com" target="_blank">arbuckle911@gmail.com</a>&gt;&gt; wrote:<br>

&gt;<br>
&gt; &nbsp; &nbsp; Hi,<br>
&gt; &nbsp; &nbsp; Before I ask my question I want to clarify what I mean by an<br>
&gt; &nbsp; &nbsp; &quot;arbitrary<br>
&gt; &nbsp; &nbsp; library&quot;. There are libraries that are registered in the system<br>
&gt; &nbsp; &nbsp; and you<br>
&gt; &nbsp; &nbsp; can link to them like so:<br>
&gt; &nbsp; &nbsp; target_link_library(targetName GL SDL pq)<br>
&gt; &nbsp; &nbsp; and they get sent to the linker int the form:<br>
&gt; &nbsp; &nbsp; -lGL -lSDL -lpq<br>
&gt; &nbsp; &nbsp; that fine, but I have a file in the form libName.a and I compiled it<br>
&gt; &nbsp; &nbsp; from source and it&#39;s not in the /usr/lib directory. It&#39;s just<br>
&gt; &nbsp; &nbsp; sitting in<br>
&gt; &nbsp; &nbsp; my project directory. how can I tell cmake not to turn<br>
&gt; &nbsp; &nbsp; target_link_libraries(targetName libName.a) into -lName, but keep the<br>
&gt; &nbsp; &nbsp; original so the linker can find it?<br>
&gt;<br>
&gt;<br>
&gt; This works for me in CMake 2.4.8:<br>
&gt;<br>
&gt; TARGET_LINK_LIBRARIES(target ${PROJECT_SOURCE_DIR}/libFoo.a)<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; /usr/bin/c++ &nbsp; &nbsp; &nbsp;-fPIC &quot;CMakeFiles/bar.dir/bar.o&quot; &nbsp; -o bar -rdynamic<br>
&gt; -L/home/lowman/tmp/foo -Wl,-Bstatic -lfoo -Wl,-Bdynamic<br>
&gt; -Wl,-rpath,/home/lowman/tmp/foo<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; Philip Lowman<br>
</div></div>Hi Philip,<br>
thanks, that&#39;s almost working. Now I&#39;ve got:<br>
target_link_libraries(target ../foolib/libFoo.a)<br>
<br>
this produces:<br>
/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/../../../../x86_64-pc-linux-gnu/bin/ld:<br>
cannot find -l../foolib/libFoo.a<br>
<br>
It would work if it looked for &quot;../foolib/libFoo.a&quot; and not<br>
&quot;-l../foolib/libFoo.a&quot;<br>
Any idea as to how to fix this?<br>
</blockquote></div><br></div></div>If you&#39;re trying to link against a library that&#39;s outside of your source tree, you should always use FIND_LIBRARY then TARGET_LINK_LIBRARIES.&nbsp; FIND_LIBRARY will almost always do exactly what you want if you give it
the NO_DEFAULT_PATHS option and specify the path to the library you want to find.&nbsp; In the event you have a &quot;.so&quot; and &quot;.a&quot; in
the same directory you should be made aware that it always prefers the &quot;.so&quot;.&nbsp; This behavior has been
fixed in CMake CVS so you can specify the &quot;.a&quot; file directly if you encounter this situation.<br><br>If you&#39;re trying to link against a library that&#39;s inside your source tree you can reference it relative to ${PROJECT_SOURCE_DIR} or one of the other variables that defines directories in your source tree, like ${CMAKE_CURRENT_SOURCE_DIR}.&nbsp; Apparently, relative paths will not work for this though (as you&#39;ve discovered).&nbsp; See this page for details on variables you can use:<br>

<br><a href="http://www.cmake.org/Wiki/CMake_Useful_Variables" target="_blank">http://www.cmake.org/Wiki/CMake_Useful_Variables</a><br><br><br><br>-- <br><font color="#888888">Philip Lowman
</font></div><br><br clear="all"><br>-- <br>Philip Lowman