Ein großer Nachteil von CMake ist, dass Standardordner im Benutzerverzeichnis kennt aus dem es zusätzliche Skripte ziehen kann. Gerade noch in der Entwicklung befindliche Skripte, wie mein FindOpenCL möchte man aber nicht gleich global im System verankern. Die Lösung liegt in der Variable CMAKE_MODULE_PATH. Die in dieser Variablen Verzeichnisse werden von find_package() vor den Verzeichnissen der CMake-Installation durchsucht.

Soll der Pfad zu den zusätzlichen Modulen nicht in jedem CMakeList.txt codiert werden, so muss er CMake aufgrund der mangelnden Konfigurierbarkeit bei jedem Aufruf übergeben werden. Da es sich um eine echte CMake-Variable handelt, welche nicht automatisch aus einer Umgebunsvariablen gleichen Namens gefüllt wird, ist es am einfachsten dies durch ein passendes Alias bei jedem Aufruf automatisch mitzugeben. Hierzu fügt man am Ende der ~/.bashrc folgende Zeile an:

# Have CMake also search for modules in ~/.cmake/modules
alias cmake="cmake -DCMAKE_MODULE_PATH=~/.cmake/modules"