CMake variable names case sensitive?

2019-06-15 16:19发布

问题:

How does CMake treat variable names? Are they case sensitive?

If I use FindFoo.cmake with

find_package(Foo)

can I use FOO_FOUND, Foo_FOUND and foo_FOUND?

回答1:

CMake variables are case sensitive. See documentation.


As a side note, commands are case insensitive, and their arguments are case sensitive. See wiki. Keywords like STATUS are case sensitive because they are arguments. Example:

message(STATUS foo)
MESSAGE(status foo)

outputs:

foo
statusfoo

the second marked as a warning (default message type).

Still regarding case sensitivity, take also a look to the boolean variable section.



回答2:

They are case sensitive.

Here an example:

set(foo 42)

MESSAGE( STATUS ${foo})
MESSAGE( STATUS ${Foo})

Output:

-- 42
-- 


回答3:

Look at the documentation of FindFoo to find out what the correct _FOUND variable is. Or maybe use this tool someday:

https://youtu.be/BPgXuvPAl-8?t=659