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

Laura Autón García laura.auton at gmail.com
Mon Jul 25 07:19:56 EDT 2011


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.


More information about the CMake mailing list