[CMake] [Spam] Re: EXECUTABLE_OUTPUT_PATH vs CMAKE_RUNTIME_OUTPUT_DIRECTORY

Brad King brad.king at kitware.com
Tue Mar 4 09:49:11 EST 2008


Gonzalo Garramuño wrote:
> Andreas Pakulat wrote:
>> On 04.03.08 10:51:10, Gonzalo Garramuño wrote:
>>> Alexander Neundorf wrote:
>>>> Brad just documented this a few days ago:
>>>> http://www.cmake.org/pipermail/cmake-commits/2008-February/003333.html
>>>>
>>> This is a pretty horrible and drastic change with no heads up.  Why
>>> was the variable name change even needed?  I have tons of code
>>> already coded that depends on those variables.
>>
>> So? There's nowhere stated that those variables go away, they are just
>> deprecated and you shouldn't use them. 
> 
> Well...  That's what deprecated is.  It means the variables may go away
> or not work properly anymore in either a current or future cmake
> version.  It also means they are no longer supported (bugs, etc).

The term "deprecated" does not appear in the documentation.  They will
probably never go away and their meaning will not change.

>> Apart from that that only applies
>> to CMake 2.6, everythings fine if your projects require CMake 2.4.
>>
> 
> Well, I'm using cmake 2.5 from SVN.  I'm trying to understand what does
> the name change even accomplish?  If the renaming had been to make the
> variables prefixed with CMAKE_*, I would understand it as a
> consolidation with other cmake variables.  But as is, I don't get the
> need for the change at all.

There are two problems with the old variables:

  - They are scoped per-directory instead of per-target

  - On Windows the .dll and .lib both go to LIBRARY_OUTPUT_PATH
    but the .dll should go to EXECUTABLE_OUTPUT_PATH

Neither of these can ever be changed for compatibility reasons.  Instead
we inroduced the ARCHIVE_OUTPUT_DIRECTORY, LIBRARY_OUTPUT_DIRECTORY, and
RUNTIME_OUTPUT_DIRECTORY target properties.  These are scoped per-target
and have the correct meaning for .dll/.lib separation on Windows.  The
CMAKE_*_OUTPUT_DIRECTORY variables are used to initialize the properties
to make it easy for users to set them globally if desired.

> Also, from an API perspective, I find this hilarious:
> 
> ARCHIVE_OUTPUT_DIRECTORY, LIBRARY_OUTPUT_PATH, and RUNTIME_OUTPUT_DIRECTORY
> 
> Either name them all DIRECTORY or PATH to be consistent.

It is LIBRARY_OUTPUT_DIRECTORY.  That was a typo in the documentation of
the old LIBRARY_OUTPUT_PATH variable which I've now fixed.

-Brad


More information about the CMake mailing list