[cmake-developers] Converting cmake_parse_arguments to a builtin command
Brad King
brad.king at kitware.com
Thu Dec 5 08:56:05 EST 2013
On 12/04/2013 08:20 AM, Brad King wrote:
> On 12/04/2013 04:57 AM, Daniele E. Domenichelli wrote:
>> +1, since this is a very useful feature.
>
> Actually after thinking about this over night I realized that converting
> to a C++ implementation is the best way to fix the empty argument handling
> too. The use of "CMAKE_MINIMUM_REQUIRED_VERSION VERSION_LESS 3.0.0" and
> the directory-scoped CMAKE_PARSE_ARGUMENTS_DEFAULT_SKIP_EMPTY setting for
> compatibility are an approximation of a CMake Policy. We should just use
> a policy for it instead so that proper warnings can be given (when empty
> arguments are passed) about the change in behavior. While it is possible
> to implement a policy in CMake-language code it is much easier in C++ code.
> Converting to C++ will have other benefits already discussed.
Without a policy project authors will not be warned about the change in
behavior that would be caused by bumping cmake_minimum_required(VERSION).
With a policy we would be able to fix the NEW behavior test cases to just
set the policy instead of hacking the CMAKE_MINIMUM_REQUIRED_VERSION value.
Currently I do not plan to merge the CMakeParseArguments_EmptyArgs topic or
any topics that depend on it (like ExternalProject-independent-step-targets)
to master. I'm convinced that the cmake_parse_arguments command should be
converted to C++, taught to handle empty arguments, and handle compatibility
with a policy. Daniele, will you be able to work on this?
Thanks,
-Brad
More information about the cmake-developers
mailing list