CMake и / или сделать ошибку при добавлении буста в проект - PullRequest
0 голосов
/ 10 апреля 2019

Я запустил новый проект на c ++, пытаясь использовать boost program_options .К сожалению, у меня проблемы с cmake;в зависимости от того, что я пытаюсь сделать, я получаю либо ошибку gmake, которая не в состоянии создать файл, либо другую информацию о целевых шаблонах, не содержащих %.

Фактические ошибки:

Хотяиспользование $ {Boost_LIBRARIES} (случай 1): ошибка gmake: нет правил для сборки /usr/local/lib/libbooost_program_options.so

При использовании Boost :: program_options (случай 2): ошибка gmake: целевой шаблон делаетне знакомый "%".Стоп.

Я попытался найти решение из этого потока SO: Как связать программу C ++ с Boost с помощью CMake

О случае 1: this предоставляет пошаговое руководство по этой проблеме.К сожалению, после первого шага «проверить, существует ли файл», нет никаких намеков на то, что делать, если он существует, что он и делает в моем случае.

stat /usr/local/lib/libboost_program_options.so
  Datei: /usr/local/lib/libboost_program_options.so -> libboost_program_options.so.1.62.0

Другие потоки, такие как «Нет«Правило сделать цель» ошибка в cmake при соединении с общей библиотекой предлагает использовать сценарии поиска, что я уже делаю.

edit: Благодаря комментарию выяснилось, что я был слепым по части сообщения об ошибке: Путь, подключенный к make-файлу, является «Boost :: program_options-NOTFOUND», что, очевидно, приведет к ошибке.


О случае 2: ​​ Целевой шаблон не содержит «%».Makefile подразумевает, что это проблема пути с любым из моих путей.Я понятия не имею, как продолжить отладку проблемы, так как отладка сценариев cmake, похоже, не очень хорошо поддерживается.Информацию об этом трудно найти в любой поисковой системе.

Две версии скриптов cmake, которые я использовал, выглядят так:

cmake_minimum_required(VERSION 3.13)
project(probsim)

set(CMAKE_CXX_STANDARD 17)

FIND_PACKAGE(Boost COMPONENTS program_options REQUIRED )

add_executable(probsim main.cpp)

target_link_libraries(probsim ${Boost_LIBRARIES})
# alternative: target_link_libraries(probsim Boost::program_options)

Результаты следующие:

-- Boost version: 1.62.0
-- Found the following Boost libraries:
--   program_options
-- Configuring done
-- Generating done
-- Build files have been written to: /home/ketzu/CLionProjects/probsim/cmake-build-debug

Резюме: Cmake так или иначе создает недопустимый make-файл, причина, по-видимому, связана с путями, используемыми в моей файловой системе.

1 Ответ

0 голосов
/ 26 апреля 2019

Хотя я мог найти подсказки по причинам проблемы, я не смог их решить.Скорее всего, это была проблема с моей конфигурацией системы на fedora.

Но в качестве альтернативного решения для управления библиотекой разработки операционной системы и проблем с ld я использовал conan.io с cmake для настройки моегосреда разработки.

Хотя это не может помочь всем, кто сталкивается с подобными проблемами, с которыми я сталкиваюсь, это может помочь некоторым.

Спасибо всем за помощь.

...