[CMake] how to select static libraries for linking?

James Bigler jamesbigler at gmail.com
Thu Jun 11 19:17:04 EDT 2009


On Thu, Jun 11, 2009 at 5:05 PM, James C. Sutherland <
James.Sutherland at utah.edu> wrote:

>
> On Jun 11, 2009, at 4:49 PM, James C. Sutherland wrote:
>
>  I have an executable that links with HDF5 (by the way, is there any plan
>> to create a "FindHDF5.cmake" file?).
>> The problem is that I have two flavors of libraries:
>>        libhdf5_cpp.a           libhdf5.a
>>        libhdf5_cpp.dylib       libhdf5.dylib
>> When I do
>>  set( HDF5_LIBRARIES hdf5_cpp hdf5 )
>> it seems that CMake ends up choosing the *.dylib rather than the *.a
>> versions.  Is there a way to fix this so that I link statically?
>>
>>
> Well, I tried
>         set( HDF5_LIBRARIES hdf5_cpp.a hdf5.a )
> and that partly did the job.  It appears that somehow some other hdf5 dlls
> were being pulled in (hdf5_cpp.0.dylib).
>
> I would like to generate executables that can be run on other systems, but
> the problem is these DLLs are killing me!  Any tips would be great.


Keep in mind that on Mac the linker will try extremely hard to choose the
dylib over the .a lib.  The only way I could get them to work properly was
to specify the whole file name on the link line that includes the .a, or put
the .a libraries in a separate folder and use a special argument to the
linker to tell it to do breadth first search when looking for libraries (I
don't remember offhand what the argument is, see the man page for the
linker).

If you are distributing your application on a Mac, then there are myriads of
methods to distribute the shared libraries with the application.

James
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20090611/61342992/attachment-0001.htm>


More information about the CMake mailing list