Я хочу использовать поддержку Boosts для флагов командной строки в C++ в Linux. Я использую CMake для создания приложения, но получаю сообщение об ошибке «не могу найти -lboost_program_options». Библиотека boost_program_options была создана независимо с помощью bjam, а библиотеки находятся в подкаталоге stage/lib каталога boost.CMake linking Boost: не удается найти -lboost_program_options
Что работает: Решение состоит в том, чтобы добавить этап/Библиотека библиотеки с использованием link_directories, но штаты CMake manual:
Обратите внимание, что эта команда редко. Библиотечные объекты, возвращаемые find_package() и find_library(), являются абсолютными путями.
Для этого не должно быть необходимости.
То, что я хочу, чтобы иметь рабочий:
Использование find_package должно быть достаточно, но это не работает, вот 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)
Вопрос
Где находится ошибка в CMakeLists?
Заранее благодарен!
Благодарим за быстрый ответ, этого действительно не хватало. –
@ DA-- это не совсем ваша ошибка - документация для cmake шокирует - это позор, как это фантастика. Другое примечание: избегайте библиотек ссылок на платформу. По возможности используйте абстрактные версии cmake. –