Skip to content

cmake: enable new quoted argument policy CMP0054#4829

Merged
ethomson merged 2 commits intolibgit2:masterfrom
pks-t:pks/cmake-cmp0054
Oct 4, 2018
Merged

cmake: enable new quoted argument policy CMP0054#4829
ethomson merged 2 commits intolibgit2:masterfrom
pks-t:pks/cmake-cmp0054

Conversation

@pks-t
Copy link
Member

@pks-t pks-t commented Oct 4, 2018

Quoting from CMP0054's documentation:

 Only interpret if() arguments as variables or keywords when
 unquoted.

 CMake 3.1 and above no longer implicitly dereference variables or
 interpret keywords in an if() command argument when it is a Quoted
 Argument or a Bracket Argument.

 The OLD behavior for this policy is to dereference variables and
 interpret keywords even if they are quoted or bracketed. The NEW
 behavior is to not dereference variables or interpret keywords that
 have been quoted or bracketed.

The previous behaviour could be quite unexpected. Quoted arguments might
be expanded in case where the value of the argument corresponds to a
variable. E.g. IF("MONKEY" STREQUAL "MONKEY") would have been expanded
to IF("1" STREQUAL "1") iff SET(MONKEY 1) was set. This behaviour
was weird, and recent CMake versions have started to complain about this
if they see ambiguous situations. Thus we want to disable it in favor of
the new behaviour.

pks-t added 2 commits October 4, 2018 10:55
Our CMake coding style dictates that there should be no space between
`IF` and its opening `(`. Adjust our policy statements to honor this
style.
Quoting from CMP0054's documentation:

    Only interpret if() arguments as variables or keywords when
    unquoted.

    CMake 3.1 and above no longer implicitly dereference variables or
    interpret keywords in an if() command argument when it is a Quoted
    Argument or a Bracket Argument.

    The OLD behavior for this policy is to dereference variables and
    interpret keywords even if they are quoted or bracketed. The NEW
    behavior is to not dereference variables or interpret keywords that
    have been quoted or bracketed.

The previous behaviour could be quite unexpected. Quoted arguments might
be expanded in case where the value of the argument corresponds to a
variable. E.g. `IF("MONKEY" STREQUAL "MONKEY")` would have been expanded
to `IF("1" STREQUAL "1")` iff `SET(MONKEY 1)` was set. This behaviour
was weird, and recent CMake versions have started to complain about this
if they see ambiguous situations. Thus we want to disable it in favor of
the new behaviour.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants