Based on excellent comment in #1489, the logic to set cmake policies was simplified. This will provide an easier mechanism for maintaining the conditional logic across many versions of cmake.
Cmake contributions
Contributions to the cmake build configurations are welcome. Please use case sensitivity that matches modern (ie. cmake version 2.6 and above) conventions of using lower-case for commands, and upper-case for varibles.
CMake Style Recommendations
Indent all code correctly, i.e. the body of
- if/else/endif
- foreach/endforeach
- while/endwhile
- macro/endmacro
- function/endfunction
Use spaces for indenting, 2, 3 or 4 spaces preferably. Use the same amount of spaces for indenting as is used in the rest of the file. Do not use tabs.
Upper/lower casing
Most important: use consistent upper- or lowercasing within one file !
In general, the all-lowercase style is preferred.
So, this is recommended:
add_executable(foo foo.c)
These forms are discouraged
ADD_EXECUTABLE(bar bar.c)
Add_Executable(hello hello.c)
aDd_ExEcUtAbLe(blub blub.c)
End commands
To make the code easier to read, use empty commands for endforeach(), endif(), endfunction(), endmacro() and endwhile(). Also, use empty else() commands.
For example, do this:
if(FOOVAR)
some_command(...)
else()
another_command(...)
endif()
and not this:
if(BARVAR)
some_other_command(...)
endif(BARVAR)
Other resources for best practices
https://cmake.org/cmake/help/latest/manual/cmake-developer.7.html#modules