METIS: неопределенная ссылка на METIS_WPartGraphRecursive

Я должен скомпилировать программное обеспечение, которое зависит от библиотеки METIS, но чья вещь CMake была написана путем отключения всех мест, где был нужен METIS. Теперь мне нужно снова включить этот код, и теперь он зависит от METIS.

Я установил metis-5.1.0 из исходного кода и написал модуль CMake, чтобы найти его (на самом деле я использовал этот). Я изменяю CMakeLists.txt соответственно, в основном добавляя следующие строки

find_package(METIS REQUIRED)
if (METIS_FOUND)
include_directories(SYSTEM ${METIS_INCLUDE_PATH})
else (METIS_FOUND)
message (SEND_ERROR "This application cannot compile without METIS")
endif (METIS_FOUND)

и, в конце концов,

target_link_libraries(<my_executable> ${METIS_LIBRARIES})

После cmake, кажется, все в порядке, потому что cmake печатает:

-- Found METIS: /usr/local/include
-- METIS libraries /usr/local/lib/libmetis.a
...
-- Configuring done
-- Generating done
-- Build files have been written to: <mylocation>

Однако после запуска make я получаю

 undefined reference to `METIS_WPartGraphKway'
undefined reference to `METIS_WPartGraphRecursive'

Как я могу решить?

РЕДАКТИРОВАТЬ:
В качестве дополнительной информации, когда я собираю с make VERBOSE=1компоновщик, похоже, ищет нужную библиотеку, так как она включает /usr/local/lib/libmetis.a, что соответствует местоположению, которое указывал cmake и которое также существует. Более того, когда я смотрю в библиотеку с nm /usr/local/lib/libmetis.a, Я вижу:

00000000000001c0 T METIS_WPartGraphKway
00000000000009c0 T METIS_WPartGraphRecursive

П.С .: В Ubuntu 17.04 я пробовал с metis-5.1.0, metis-4.0.3, а также с установкой sudo apt-get install libmetis-dev, В последнем случае я нахожу libmetis.so вместо libmetis.a, но и в этом случае это правильно распознается cmake, корректно ищется компоновщиком, но в конце я получаю ту же ошибку.

Я тоже пробовал sudo apt-get install libmetis-dev, установка из источника metis-5.1.0 и metis-3.0.6 на Ubuntu 14.04 и у меня была такая же проблема.
Это кажется труднопреодолимой ошибкой, так как многие люди задают один и тот же вопрос в эта страница формы METIS.

Я также попытался добавить -lmetis в конце команды компиляции, как предложено Вот

В качестве дополнительной информации я сделал grep WPartGraphKway в исходной папке METIS. В версии 5.1.0 такой строки нет. В версии 4.0.3 есть.

0

Решение

Я решил сделать это:

  • Я устанавливаю metis-3.0
  • я бегу cmake для моего программного обеспечения
  • я бегу make VERBOSE=1
  • Я копирую последний gcc команда печатается
  • Я вставляю это, я добавляю в конце команды -lmetis и выполнить команду

Обратите внимание, что если я повторяю ту же операцию с metis-5.1.0, это не работает, и у меня та же ошибка, что я написал в первом посте.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]