Ошибка при попытке связать библиотеку Boost с помощью CMake - PullRequest
0 голосов
/ 10 февраля 2020

Я использую:

  • CMake 3.16.4
  • Visual Studio Community 2019 (версия 16.4.4)
  • Повышение 1.72.00

Мой файл CMake основан на втором примере на https://cmake.org/cmake/help/v3.6/module/FindBoost.html, плюс:

  • Я отлаживаю его:

    set (Boost_DEBUG ON)
    set (Boost_DETAILED_FAILURE_MSG ON)
    find_package(Boost 1.72 EXACT REQUIRED COMPONENTS filesystem)
    
  • Я должен был установить:

    target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE ${Boost_INCLUDE_DIR})
    
  • И я использую переменную Boost_LIBRARIES:

    target_link_libraries(${CMAKE_PROJECT_NAME} Qt5::Widgets ${Boost_LIBRARIES})
    

Все, что должно работать как чудо - но я получаю:

2>LINK : fatal error LNK1104: cannot open file 'libboost_filesystem-vc142-mt-gd-x64-1_72.lib'

Из отладки FindBoost я вижу, что:

[C: / Program Files /CMake/share/cmake-3.16/Modules/FindBoost.cmake:1541] BOOST_LIBRARYDIR =

ЭТО РЕШЕНО ВОПРОС:

link_directories(${Boost_LIBRARY_DIR_RELEASE})

ЭТО ТАКЖЕ РЕШЕН ВОПРОС:

set(Boost_USE_STATIC_LIBS        ON) # only find static libs
set(Boost_USE_MULTITHREADED      ON)
set(Boost_USE_STATIC_RUNTIME    OFF)

НО Я НЕ ДОЛЖЕН ЭТО НУЖНО!

Может кто-нибудь сказать, что не так?

1 Ответ

0 голосов
/ 10 февраля 2020

Последняя версия Boost поставляется с файлом конфигурации CMake. Вы можете использовать его, указав его:

find_package(Boost 1.72 EXACT REQUIRED COMPONENTS filesystem NO_MODULE)

Просто добавьте CMAKE_PREFIX_PATH туда, где нужно найти повышение, и find_package сделает все остальное.

И я использую переменную Boost_LIBRARIES:

Попробуйте вместо этого использовать их цели:

target_link_libraries(${CMAKE_PROJECT_NAME} Qt5::Widgets Boost::filesystem)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...