[CMake] Invalid library output directory when VC++ solution is generated

Glenn Coombs glenn.coombs at gmail.com
Tue Jul 26 17:27:53 EDT 2011


Have a look at the documentation for CMAKE_RUNTIME_OUTPUT_DIRECTORY.  On
Linux the .so shared library files do go in the LIBRARY_OUTPUT_DIRECTORY.
However, on Windows the DLL files are placed in the runtime directory and
only the import libraries (.LIB files) are placed in the
LIBRARY_OUTPUT_DIRECTORY.

2011/7/25 Laura Autón García <laura.auton at gmail.com>

> Hello all,
> In the project I am collaborating on, CMake is used in Windows in
> order to generate a Visual C++ solution to be compiled afterwards. In
> this process, everything seems to work fine as the external
> directories and libraries are well included and everything compiles
> and so. However, we are experiencing problems with the directory in
> which our dll library is to be created.
> We specify in CMake that the directory is ../lib but
> when checking the configuration in Visual C++ software, it seems to be
> ../bin/Release directory, so the library is generated there.
> The CMake sentences we wrote regarding this issue are as follows:
>
>  SET(LIB_DIR      "${PROJECT_SOURCE_DIR}/lib")
>  SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LIB_DIR} CACHE PATH "Directory
> for libraries")
>
> According to the documentation:
>
>  CMAKE_LIBRARY_OUTPUT_DIRECTORY: Where to put all the LIBRARY
> targets when built.
>  This variable is used to initialize the LIBRARY_OUTPUT_DIRECTORY
> property on all the targets.
>  See that target property for additional information.
>
> Also, the documentation regarding LIBRARY_OUTPUT_DIRECTORY shows:
>
>  LIBRARY_OUTPUT_DIRECTORY: Output directory in which to build
> LIBRARY target files.
>  This property specifies the directory into which library target
> files should be built. There are three
>  kinds of target files that may be built: archive, library, and
> runtime. Executables are always treated
>  as runtime targets. Static libraries are always treated as archive
> targets. Module libraries are always
>  treated as library targets. For non-DLL platforms shared libraries
> are treated as library targets. For
>  DLL platforms the DLL part of a shared library is treated as a
> runtime target and the corresponding
>  import library is treated as an archive target. All Windows-based
> systems including Cygwin are
>  DLL platforms. This property is initialized by the value of the variable
>  CMAKE_LIBRARY_OUTPUT_DIRECTORY if it is set when a target is created.
>
> However, when the project is generated, the library output directory
> is not the one specified, but the one I mentioned above.
> If anyone has any idea why this may be happening, it would be appreciated.
> The binaries, on the other hand, as generated in their correct directory.
>
> Thank you in advance.
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the CMake FAQ at:
> http://www.cmake.org/Wiki/CMake_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.cmake.org/mailman/listinfo/cmake
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20110726/96361056/attachment.htm>


More information about the CMake mailing list