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

Laura Autón García laura.auton at gmail.com
Wed Jul 27 07:03:45 EDT 2011


Hello glenn,
Thank you for your answer.
I misunderstood the documentation. Thank you for pointing this out!

Documentation:
"...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..."

It's a pity, because our intention was to keep in Windows, the way
this is done in Linux, I mean, libraries (either shared or not) in
../lib directory and executables in ../bin directory. Right now, with
no other ideas than the one provided by Alan in his previous reply,
there seems to be no simple way to separate DLL files from binaries
ones. It works perfectly using deprecated options:

	SET(EXECUTABLE_OUTPUT_PATH 	${BIN_DIR} CACHE PATH "Directory for executables")	
	SET(LIBRARY_OUTPUT_PATH 		${LIB_DIR} CACHE PATH "Directory for executables")

I understand this is not desirable, so we will have to make a choice
between using deprecated properties while we try to figure out other
way, or moving to the new way.

2011/7/26 Glenn Coombs <glenn.coombs at gmail.com>:
> 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
>
>


More information about the CMake mailing list