cmake
Testen und debuggen
Suche…
Allgemeiner Ansatz zum Debuggen beim Erstellen mit Make
Angenommen, das make
schlägt fehl:
$ make
Starten Sie es stattdessen mit make VERBOSE=1
, um die ausgeführten Befehle make VERBOSE=1
. Führen Sie dann direkt den Linker- oder Compiler-Befehl aus, den Sie sehen. Versuchen Sie, dies durch das Hinzufügen notwendiger Flags oder Bibliotheken zum Laufen zu bringen.
Überlegen Sie sich dann, was Sie ändern müssen, damit CMake die richtigen Argumente an den Compiler / Linker-Befehl übergeben kann:
- Was muss im System geändert werden (welche Bibliotheken müssen installiert werden, welche Versionen und Versionen von CMake selbst)
- Wenn vorherige fehlschlägt, welche Umgebungsvariablen oder Parameter an CMake übergeben werden sollen
- Andernfalls ändern Sie die Änderungen in der
CMakeLists.txt
des Projekts oder in den Erkennungsskripten für Bibliotheken wieFindSomeLib.cmake
Um dies zu CMakeLists.txt
, fügen Sie in CMakeLists.txt
oder *.cmake
message(${MY_VARIABLE})
*.cmake
, um zu überprüfende Variablen zu debuggen.
Lassen Sie CMake ausführliche Makefiles erstellen
Sobald ein CMake-Projekt über project()
initialisiert wurde, kann die Ausgabebosität des resultierenden Build-Skripts angepasst werden:
CMAKE_VERBOSE_MAKEFILE
Diese Variable kann beim Konfigurieren eines Projekts über die Befehlszeile von CMake festgelegt werden:
cmake -DCMAKE_VERBOSE_MAKEFILE=ON <PATH_TO_PROJECT_ROOT>
Für GNU make hat diese Variable den gleichen Effekt wie das Ausführen von make VERBOSE=1
.
Debuggen Sie find_package () -Fehler
Hinweis: Die angezeigten CMake-Fehlermeldungen enthalten bereits das Update für "Nicht-Standard" -Bibliothek / Tool-Installationspfade. Die folgenden Beispiele zeigen lediglich ausführlichere CMake find_package()
.
CMake intern unterstütztes Paket / Modul
Wenn der folgende Code (ersetzen Sie das FindBoost
Modul durch Ihr fragliches Modul )
cmake_minimum_required(VERSION 2.8)
project(FindPackageTest)
find_package(Boost REQUIRED)
gibt einen Fehler wie
CMake Error at [...]/Modules/FindBoost.cmake:1753 (message):
Unable to find the requested Boost libraries.
Unable to find the Boost header files. Please set BOOST_ROOT to the root
directory containing Boost or BOOST_INCLUDEDIR to the directory containing
Boost's headers.
Und Sie fragen sich, wo Sie die Bibliothek gefunden haben. Sie können überprüfen, ob Ihr Paket eine _DEBUG
-Option hat wie das Boost
Modul, um ausführlichere Ausgaben zu erhalten
$ cmake -D Boost_DEBUG=ON ..
CMake-fähiges Paket / Bibliothek
Wenn der folgende Code (ersetzen Sie den Xyz
durch Ihre Xyz
Bibliothek )
cmake_minimum_required(VERSION 2.8)
project(FindPackageTest)
find_package(Xyz REQUIRED)
gibts die etwas fehler wie
CMake Error at CMakeLists.txt:4 (find_package):
By not providing "FindXyz.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "Xyz", but
CMake did not find one.
Could not find a package configuration file provided by "Xyz" with any of
the following names:
XyzConfig.cmake
xyz-config.cmake
Add the installation prefix of "Xyz" to CMAKE_PREFIX_PATH or set "Xyz_DIR"
to a directory containing one of the above files. If "Xyz" provides a
separate development package or SDK, be sure it has been installed.
Sie fragen sich, wo die Bibliothek CMAKE_FIND_DEBUG_MODE
wurde. Sie können die undokumentierte globale Variable CMAKE_FIND_DEBUG_MODE
, um eine ausführlichere Ausgabe zu erhalten
$ cmake -D CMAKE_FIND_DEBUG_MODE=ON ..