Я запустил новый проект на 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-файл, причина, по-видимому, связана с путями, используемыми в моей файловой системе.