[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