[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