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                                    
======================================================================

--

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://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers

Reply via email to