To put in in one sentence: be as careful when writing the CMake files as when you are writing C++ code.

==Indentation==

==Indentation==

Line 44:

Line 48:

<syntaxhighlight lang="cmake">

<syntaxhighlight lang="cmake">

if(FOOVAR)

if(FOOVAR)

−

some_command(...)

+

some_command(...)

else()

else()

−

another_command(...)

+

another_command(...)

endif()

endif()

</syntaxhighlight>

</syntaxhighlight>

Line 53:

Line 57:

<pre>

<pre>

if(BARVAR)

if(BARVAR)

−

some_other_command(...)

+

some_other_command(...)

endif(BARVAR)

endif(BARVAR)

</pre>

</pre>

+

+

=Writing CMake Find-modules=

==(Not) Using pkg-config==

==(Not) Using pkg-config==

Line 66:

Line 72:

* putting something like if(NOT WIN32) around the pkg-config stuff is not necessary (and should be removed if it is somewhere). If pkg-config is not found, e.g. on Windows, the macros simply do nothing.

* putting something like if(NOT WIN32) around the pkg-config stuff is not necessary (and should be removed if it is somewhere). If pkg-config is not found, e.g. on Windows, the macros simply do nothing.

−

==Writing CMake Find-modules==

+

==Follow CMake's readme.txt==

−

* Follow the style guide from CMake when writing some FindFoo.cmake module:

+

Follow the style guide from CMake when writing some FindFoo.cmake module:

* For checking the results inside the Find-module, the macro find_package_handle_standard_args() (coming with CMake) should be used, using the new extended syntax, which supports also version checking.

+

==Use FindPackageHandleStandardArgs.cmake==

+

For checking the results inside the Find-module, the macro find_package_handle_standard_args() (coming with CMake) should be used, using the new extended syntax, which supports also version checking.

Avoid Micro-Optimzations

should be removed, the find-logic should be executed always. These shortcuts can cause problems e.g. when the same file is used from multiple directories but e.g. with different required versions or components etc.