Как использовать Boost Multiprecision в проекте CMake?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как использовать Boost Multiprecision в проекте CMake?

Сообщение Anonymous »

Я хочу использовать Boost Multiprecision в своем проекте на C++, но не могу. Я подозреваю, что не добавил правильные зависимости в свою корневую конфигурацию CMakeLists.txt, соответствующая часть которой выглядит следующим образом:

Код: Выделить всё

cmake_minimum_required(VERSION 3.30.0)
project(MyProject VERSION 1.0.0 LANGUAGES C CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

add_subdirectory(src)
add_subdirectory(app)
add_subdirectory(test)

find_package(Boost REQUIRED)
include_directories(${Boost_INCLUDE_DIRS})

list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
find_package(MPFR REQUIRED)
include_directories(${MPFR_INCLUDE_DIRS})

set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)
Я обязательно связал библиотеки для моего исполняемого файла в app/CMakeLists.txt:

Код: Выделить всё

add_executable(main main.cpp)
target_link_libraries(main PRIVATE myLib)
target_link_libraries(main ${Boost_LIBRARIES})
target_link_libraries(main ${MPFR_LIBRARIES})
и для моей библиотеки в src/CMakeLists.txt:

Код: Выделить всё

file(GLOB HEADER_LIST CONFIGURE_DEPENDS "${MyProject_SOURCE_DIR}/include/*.h")
add_library(myLib SomeFile.cpp ${HEADER_LIST})
target_include_directories(myLib PUBLIC ../include)
target_link_libraries(myLib ${Boost_LIBRARIES})
target_link_libraries(myLib ${MPFR_LIBRARIES})
Я проверил, что Boost и MPFR установлены в моей системе через менеджер пакетов.
Мой линтер () не выдает ошибок, когда я включаю необходимые заголовки и использую тип multiprecision:

Код: Выделить всё

#include 
// ...

int main() {
IOParser parser;
// ...
}
Но когда я компилирую свою программу, я получаю несколько неопределенных ссылок на различные функции MPFR, такие как:

Код: Выделить всё

[build] /usr/bin/ld: CMakeFiles/main.dir/main.cpp.o: in function `boost::multiprecision::backends::detail::mpfr_float_imp::operator=(boost::multiprecision::backends::detail::mpfr_float_imp&&) [clone .isra.0]':
[build] main.cpp:(.text+0x2dc): undefined reference to `mpfr_swap'
[build] /usr/bin/ld: main.cpp:(.text+0x30c): undefined reference to `mpfr_set4'
[build] /usr/bin/ld: main.cpp:(.text+0x386): undefined reference to `mpfr_init2'
Что я делаю не так?

Подробнее здесь: https://stackoverflow.com/questions/790 ... ke-project
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Неопределенные ссылки на функции mpfr_*() при попытке использовать Boost Multiprecision в проекте CMake?
    Anonymous » » в форуме C++
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Неопределенные ссылки на функции mpfr_*() при попытке использовать Boost Multiprecision в проекте CMake?
    Anonymous » » в форуме C++
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Используйте Quadmath и boost::multiprecision с помощью CMake
    Anonymous » » в форуме C++
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Проблема boost::multiprecision::powm с большими целыми числами
    Anonymous » » в форуме C++
    0 Ответы
    67 Просмотры
    Последнее сообщение Anonymous
  • C ++ String to Boost :: Multiprecision :: CPP_INT
    Anonymous » » в форуме C++
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»