[CMake] Windows library target names
mike.jackson at bluequartz.net
Thu Jul 22 17:50:33 EDT 2010
On Jul 22, 2010, at 5:42 PM, Olaf van der Spek wrote:
> On Thu, Jul 22, 2010 at 11:36 PM, Michael Jackson
> <mike.jackson at bluequartz.net> wrote:
>>> How does the loader find the DLL?
>> Because when Visual Studio launches an executable it will look in
>> the same
>> directory that the executable resides in for libraries to load.
>> Now, if you
>> have 2 completely separate projects where one builds libraries and
>> the other
>> builds the executables OR you have set the various CMAKE_RUNTIME_DIR,
>> CMAKE_ARCHIVE_DIR and CMAKE_EXECUTABLE_DIR to different directories
>> then you
>> are going to have to setup your PATH accordingly for each solution/
>> Most people set all three of those CMake variables to the same output
> Of course I have separate projects. I didn't write libz... Did you?
> DLLs should be *shared*. There shouldn't be a need for me to copy them
> to my app dir.
Actually I _did_ put a CMake wrapper on LibZ that _does_ in fact
decorate the library names. I did the same thing for expat, libTiff
and HDF5 because I ran into all of these same issues a few years back.
I then wrote custom FindXXX.cmake files to find the libraries in both
the debug and release variants which all happen to be in the same
build directory. My project then knows which library to link against,
which ones to "install" or put into a NSIS installer package. So maybe
that is the answer that you are looking for.
The straight up answer is: CMake does not do this. If you want it
put it into your cmake files. If you feel strongly enough then put in
a feature request at the CMake bug tracker. If you _really_ feel
strongly then add a patch to the feature request.
Not sure what else to say. All my projects are open source and there
are lots of others that you can take a look at that do exactly this.
I'll plug my own: http://gitorious.bluequartz.net/MXA
More information about the CMake