Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cmake: enable new quoted argument policy CMP0054 #4829

Merged
merged 2 commits into from
Oct 4, 2018

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.

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.

None yet

2 participants