Ich möchte Boosts Unterstützung für Befehlszeilen Flags in C++ unter Linux verwenden. Ich benutze CMake, um die Anwendung zu erstellen, aber ich bekomme einen Fehler "nicht gefunden -lboost_program_options". Die Bibliothek boost_program_options wurde unabhängig mit bjam erstellt und die Bibliotheken befinden sich im Unterverzeichnis stage/lib des boost-Verzeichnisses.CMake Verknüpfung Boost: nicht -lboost_program_options
Was funktionierts: Eine Lösung ist die Bühne/lib Bibliothek link_directories hinzufügen, aber die CMake manual Zustände:
Beachten Sie, dass dieser Befehl selten notwendig ist. Die von find_package() und find_library() zurückgegebenen Bibliotheksspeicherorte sind absolute Pfade.
Also das sollte nicht notwendig sein.
Was ich will, Arbeits haben:
verwenden sollte find_package genug sein, aber das funktioniert nicht, hier ist die CMakeLists:
cmake_minimum_required(VERSION 3.6)
project(inp_manipulation)
set(CMAKE_CXX_STANDARD 11)
include_directories(includes lib/boost_1_62_0 lib/)
SET(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "lib/boost_1_62_0")
SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "lib/boost_1_62_0/stage/lib")
find_package(Boost 1.62.0)
include_directories(${Boost_INCLUDE_DIR})
file(GLOB SOURCES *.cpp)
set(MAIN_FILE main.cpp)
set(SOURCE_FILES ${SOURCES})
add_executable(inp_manipulation ${MAIN_FILE} ${SOURCE_FILES})
target_link_libraries(inp_manipulation -static-libgcc -static-libstdc++ boost_program_options)
Frage
Wo liegt der Fehler in den CMakeLists?
Vielen Dank im Voraus!
Vielen Dank für die schnelle Antwort, das war in der Tat fehlte. –
@ DA-- es ist nicht ganz deine Schuld - die Dokumentation für CMake ist schockierend - was eine Schande ist, wie es fantastisch ist. Noch ein Hinweis: Vermeiden Sie plattformspezifische Link-Bibliotheken. Verwenden Sie möglichst die CMake-Abstract-Versionen. –