LINUX.ORG.RU

CMake не находит пакет

 ,


0

1

В CMakeLists.txt написано find_package(MPI REQUIRED)

Но если я правильно понимаю, нет просто пакета MPI, ибо это название протокола.

Я установил openmpi и libopenmpi-dev, но CMake всё равно говорит Could NOT find MPI (missing: MPI_CXX_FOUND)

Что это - CMake не может его найти или я не то установил?

Пробовал ещё с mpich - то же самое

Сами заголовочные файлы он видит в /lib/x86_64-linux-gnu/mpi/include -> /lib/x86_64-linux-gnu/openmpi/include

Перемещено hobbit из general



Последнее исправление: Architector (всего исправлений: 1)

А кто будет говорить какой дистрибутив у тебя и какой версии?

Вот в Ubuntu 22.04 всё хорошо и стем и стем после установки.

Если память мне не изменяет, в некоторых диструбутивах требовалось ещё module load XXX

AlexVR ★★★★★
()
Ответ на: комментарий от xenith

В общем, задал пути к каждой либе отдельно и на них он ругаться перестал

cmake ../cmake -DMPI_mpi_cxx_LIBRARY=/usr/lib/x86_64-linux-gnu/libmpi_cxx.so -DMPI_mpi_LIBRARY=/usr/lib/libmpi.so -DMPI_open-rte_LIBRARY=/usr/lib/x86_64-linux-gnu/libopen-rte.so -DMPI_open-pal_LIBRARY=/usr/lib/x86_64-linux-gnu/libopen-pal.so -DMPI_hwloc_LIBRARY=/usr/lib/x86_64-linux-gnu/libhwloc.so

Но ни он, ни я не можем найти следующее

--- Could NOT find MPI_CXX (missing: MPI_event_core_LIBRARY MPI_event_pthreads_LIBRARY MPI_CXX_WORKS)

С какими пакетами они могут поставляться и где лежать?

И ещё: если ему задать -DMPI_CXX_WORKS=True, пишет

CMake Error at /usr/share/cmake-3.22/Modules/FindMPI.cmake:1741 (file):
  file STRINGS file
  "/home/kein/repos/mylammps/build/CMakeFiles/FindMPI/test_mpi_CXX.bin"
  cannot be read.
Call Stack (most recent call first):
  CMakeLists.txt:314 (find_package)

При этом этот файл build/CMakeFiles/FindMPI/test_mpi_CXX.bin создаётся самим CMake

Architector
() автор топика
Ответ на: комментарий от aol

-DCMAKE_PREFIX_PATH=/usr/bin/mpiexec

Кто-ж знал, что префиксным путём должен быть путь к бинарнику.

Ответ-то я этот видел, и даже опцию использовал, но видимо папку build не почистил. Снёс всё и заработало.

Спасибо

Architector
() автор топика
test@test:~$ apt show libopenmpi-dev
Package: libopenmpi-dev
Version: 4.1.2-2ubuntu1
...

test@test:~$ cmake --version
cmake version 3.22.1

CMake suite maintained and supported by Kitware (kitware.com/cmake).

test@test:~$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 22.04.1 LTS
Release:	22.04
Codename:	jammy

CMakeLists.txt:

cmake_minimum_required(VERSION 3.5)

project(untitled LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(MPI REQUIRED)
message(${MPI_FOUND})

add_executable(untitled main.cpp)

target_link_libraries(untitled PRIVATE MPI::MPI_CXX)

install(TARGETS untitled
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})

Все работает. Какие у тебя версии пакетов и cmake?

rumgot ★★★★★
()