Ich versuche, ein Projekt mit CMake zu konfigurieren, aber Boost-Bibliotheken können nicht gefunden werden, obwohl sie sich im angegebenen Ordner befinden. Ich habe Boost_INCLUDE_DIR, Boost_LIBRARYDIR und BOOST_ROOT angegeben, aber ich bekomme immer noch eine Fehlermeldung, dass CMake Boost nicht finden kann. Was könnte der Grund für einen solchen Fehler sein?Cmake findet Boost nicht
Antwort
Sind Sie sicher, dass Sie es richtig machen? Die Idee ist, dass CMake BOOST_INCLUDE_DIR, BOOST_LIBRARYDIR und BOOST_ROOT automatisch setzt. Tun Sie etwas, wie dies in CMakeLists.txt:
FIND_PACKAGE(Boost)
IF (Boost_FOUND)
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR})
ADD_DEFINITIONS("-DHAS_BOOST")
ENDIF()
wenn Schub in einem Standardverzeichnis nicht installiert und kann somit nicht durch Cmake gefunden werden, können Sie sagen, cmake, wo sie suchen für Auftrieb wie folgt aus:
SET(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "C:/win32libs/boost")
SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "C:/win32libs/boost/lib")
natürlich diese beiden Linien haben vor die FIND_PACKAGE (Boost) in CMakeLists.txt
Es gibt mehr Hilfe die FindBoost.cmake Datei selbst durch das Lesen zur Verfügung stehen. Es befindet sich in Ihrem 'Modules' Verzeichnis.
Ein guter Start ist, zu setzen (Boost_DEBUG 1) - das wird eine Menge Informationen darüber ausspucken, wo Boost aussieht, wonach es sucht, und vielleicht erklären, warum es nicht gefunden werden kann.
Es kann Ihnen auch helfen, herauszufinden, ob es auf Ihrem BOOST_ROOT richtig abholt.
FindBoost.cmake hat manchmal auch Probleme, wenn die genaue Version von Boost nicht in den verfügbaren Versionsvariablen aufgeführt ist. Sie können mehr darüber finden, indem Sie FindBoost.cmake
lesen Schließlich hatte FindBoost.cmake einige Fehler in der Vergangenheit. Eine Sache, die du versuchen solltest, ist, eine neuere Version von FindBoost.cmake aus der neuesten Version von cmake zu nehmen und sie neben CMakeLists.txt in deinen Projektordner zu stecken - selbst wenn du eine alte Version von boost hast, wird sie die verwenden neue Version von FindBoost.cmake, die sich in Ihrem Projektordner befindet.
Viel Glück.
Noch ein Tipp für jeden, der versucht, CGAL insbesondere mit statisch verbundenen Boost zu bauen. Es ist nicht genug zu definieren ; es wird von der Zeit überschrieben Boost_DEBUG
gibt seinen Wert aus. Die Sache, die Sie hier tun müssen, ist das Kontrollkästchen "Erweitert" zu aktivieren und CGAL_Boost_USE_STATIC_LIBS
zu aktivieren.
Wenn Sie Ihren eigenen Auftrieb bauen nicht zu vergessen die --layout verwenden = versioniert sonst die Suche nach einer bestimmten Version der Bibliothek wird fehlschlagen
Ich hatte auch ein ähnliches Problem und entdecken, dass die BOOST_INCLUDE_DIR, BOOST_LIBRARYDIR und BOOST_ROOT env Variablen müssen absolute Pfade enthalten. HTH!
Für Cmake Version 3.1.0-RC2 Schub aufzunehmen 1,57 -D_boost_TEST_VERSIONS angeben = 1,57
Cmake Version 3.1.0-RC2 defaults < = 1.56.0 zu steigern, wie -DBoost_DEBUG = ON
mit gesehencmake -D_boost_TEST_VERSIONS = 1.57 -DBoost_DEBUG = ON -DCMAKE_BUILD_TYPE = Debug -DMAKE_C_COMPILER = clang -DCMAKE_CXX_COMPILER = 0 +++++
Ich habe selbst eine Weile mit diesem Problem gekämpft. Es stellte sich heraus, dass cmake
nach Boost-Bibliotheksdateien suchte, wobei die Boost-Namenskonvention verwendet wurde, bei der der Bibliotheksname eine Funktion der Compiler-Version ist, die zum Erstellen verwendet wurde. Unsere Boost-Bibliotheken wurden unter Verwendung von GCC 4.9.1
erstellt, und diese Compiler-Version war tatsächlich auf unserem System vorhanden; Es wurde jedoch auch GCC 4.4.7
installiert. Wie es passiert, cmake FindBoost.cmake
Skript war die automatische Erkennung der GCC 4.4.7
Installation anstelle der GCC 4.9.1
eins, und suchte daher nach Boost Bibliothek Dateien mit "gcc44
" in den Dateinamen, anstatt "gcc49
".
Die einfache Lösung bestand darin, Cmake zu zwingen, anzunehmen, dass GCC 4.9 vorhanden war, indem Boost_COMPILER
auf "-gcc49
" in gesetzt wurde. Mit dieser Änderung suchte und fand FindBoost.cmake
meine Boost-Bibliotheksdateien.
Sie können auch die Version von Boost-angeben, die Sie CMake boost richtige Version auf den Standort der Header, indem -DBOOST_INCLUDEDIR oder -DBOOST_ROOT zeigen verwenden möchten
Beispiel:
cmake -DBOOST_ROOT=/opt/latestboost
Dies ist auch nützlich, wenn sich mehrere Boost-Versionen auf demselben System befinden.
Ich hatte das gleiche Problem beim Versuch, make
für ein Projekt nach der Installation von Boost Version 1.66.0 auf Ubuntu Trusty64 laufen zu lassen. Die Fehlermeldung war ähnlich (nicht genau wie) diese:
CMake Error at
/usr/local/Cellar/cmake/3.3.2/share/cmake/Modules/FindBoost.cmake:1245 (message):
Unable to find the requested Boost libraries.
Boost version: 0.0.0
Boost include path: /usr/include
Detected version of Boost is too old. Requested version was 1.36 (or newer).
Call Stack (most recent call first):
CMakeLists.txt:10 (FIND_PACKAGE)
-Boost definitiv installiert wurde, aber CMake konnte es nicht erkennen. Nachdem er mit Wegen und Umgebungsvariablen viel Zeit bastelt, ich landete schließlich auf cmake
sich für Optionen überprüft und fanden die folgende:
--check-system-vars = Find problems with variable usage in system files
Also lief ich folgendes in das Verzeichnis in Frage:
sudo cmake --check-system-vars
die zurückgegeben:
Also check system files when warning about unused and uninitialized variables.
-- Boost version: 1.66.0
-- Found the following Boost libraries:
-- system
-- filesystem
-- thread
-- date_time
-- chrono
-- regex
-- serialization
-- program_options
-- Found Git: /usr/bin/git
-- Configuring done
-- Generating done
-- Build files have been written to: /home/user/myproject
und das Problem behoben.
- 1. cmake findet mehr als eine Hauptfunktion
- 2. Warum findet CHECK_FUNCTION_EXISTS clock_gettime nicht in CMake?
- 3. Cmake kann Boost-Bibliotheken nicht finden
- 4. Dynamisch Boost mit Cmake verknüpfen
- 5. Finding Boost kompiliert mit CLang mit CMake
- 6. Boost-CMake Problem mit Verknüpfung (Ubuntu 14.04)
- 7. CMake + Boost-Test: Tests ignorieren, die nicht erstellt werden können
- 8. CMake ist nicht in der Lage BOOST Bibliotheken
- 9. -Boost mit Cmake auf Linux (Ubuntu)
- 10. Boost Protokoll, GCC 4.4 und CMake
- 11. BOOST_ROOT für cmake kann nicht angegeben werden
- 12. Travis-ci nicht boost/geometry.hpp
- 13. Fügen Sie einen Cmake hinzu, der ein Paket in CMake findet
- 14. So ermitteln Sie die Boost-Bibliotheksnamen für CMake
- 15. Wie findet man alle Treffer boost :: multi_index mit einem Schlüssel?
- 16. Ausschließen Qt und Boost enthält von CMake Abhängigkeiten
- 17. Wie verbindet man C++ - Programm mit Boost mit CMake
- 18. Verknüpfen Sie die statischen Versionen der Boost-Bibliotheken mit CMake
- 19. Boost Linking Probleme - Mehrere Versionen
- 20. cmake - find_library - benutzerdefinierte Bibliothekslokation
- 21. ZF2 findet nicht Controller
- 22. py.test nicht findet Modul
- 23. ObjectDataSource findet nicht SelectCountMethod
- 24. CasperJS findet jQuery nicht
- 25. CLion und Boost 1.60.0
- 26. Cmake make nicht -lprotocol
- 27. CMake nicht QWidgets finden
- 28. CMake | Warum startet nicht?
- 29. cmake nicht finden Qt4
- 30. YCM findet meine Header nicht?
Es ist '$ {Boost_INCLUDE_DIR}' nicht '$ {BOOST_INCLUDE_DIR}', Fall ist wichtig. –
Vielleicht hat sich das in neueren Versionen von cmake geändert, aber hier ist die Referenzdokumentation: http://www.cmake.org/cmake/help/v3.0/module/FindBoost.html –
es funktioniert nicht für mich ... Es findet die Boost-Bibliothek, erzeugt aber zur Kompilierungszeit Tonnen von Fehlern –