[cmake-developers] [CMake 0013644]: Default pdb output location changed in cmake 2.8.10
Mantis Bug Tracker
mantis at public.kitware.com
Fri Nov 2 10:49:55 EDT 2012
The following issue has been SUBMITTED.
======================================================================
http://www.cmake.org/Bug/view.php?id=13644
======================================================================
Reported By: Reid Kleckner
Assigned To:
======================================================================
Project: CMake
Issue ID: 13644
Category: CMake
Reproducibility: always
Severity: minor
Priority: normal
Status: new
======================================================================
Date Submitted: 2012-11-02 10:49 EDT
Last Modified: 2012-11-02 10:49 EDT
======================================================================
Summary: Default pdb output location changed in cmake 2.8.10
Description:
In the course of adding PDB_OUTPUT_DIRECTORY and related properties and
variables, the default location for pdb files changed.
In our project (DynamoRIO) we have a bunch of targets where we set
RUNTIME_OUTPUT_DIRECTORY, LIBRARY_OUTPUT_DIRECTORY, etc. The .pdb file would
get created in ${RUNTIME_OUTPUT_DIRECTORY} next to the .dll, which is what we
want. After this change, it would get created in the default output directory,
which is different. Furthermore, this would mean the pdbs never got installed.
Our CMake code:
set_target_properties(dynamorio PROPERTIES
LIBRARY_OUTPUT_DIRECTORY${location_suffix} "${DR_LIBRARY_OUTPUT_DIRECTORY}"
RUNTIME_OUTPUT_DIRECTORY${location_suffix} "${DR_LIBRARY_OUTPUT_DIRECTORY}"
ARCHIVE_OUTPUT_DIRECTORY${location_suffix} "${DR_LIBRARY_OUTPUT_DIRECTORY}"
# The next line is the one I added to work around the problem.
#PDB_OUTPUT_DIRECTORY${location_suffix} "${DR_LIBRARY_OUTPUT_DIRECTORY}"
)
>From the linker command line:
/out:lib32\debug\dynamorio.dll
/implib:lib32\debug\dynamorio.lib
/pdb:core\dynamorio.pdb
We can easily work around the problem by setting PDB_OUTPUT_DIRECTORY as well as
RUNTIME, ARCHIVE, and LIBRARY, but it'd be nice for other users that aren't
using cmake from version control if the default didn't change.
Upstream issue where we figured this out:
http://code.google.com/p/chromium/issues/detail?id=159092
Original issue:
http://www.cmake.org/Bug/view.php?id=10830
CMake commit that made the change:
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3f60dbf1
Steps to Reproduce:
1. Create a library target
2. Set the runtime and archive output directory to somewhere non-default
3. Build it
4. Observe that the pdb does not reside next to the dll
======================================================================
Issue History
Date Modified Username Field Change
======================================================================
2012-11-02 10:49 Reid Kleckner New Issue
======================================================================
More information about the cmake-developers
mailing list