METISライブラリに依存するが、METISが必要なすべての場所を無効にしてCMakeを書いたソフトウェアをコンパイルする必要があります。さて、私は再びそのコードを有効にしなければならないので、コードは現在METISに依存しています。METIS:METIS_WPartGraphRecursiveへの未定義の参照
ソースからmetis-5.1.0をインストールしました。私はそれを見つけるためにCMakeモジュールを作成しました(実際にはthis oneを使用しました)。私は基本的に
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のプリント、すべてが正常であると思われる、それに応じてCMakeLists.txt
を変更します。
-- 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'
どうすれば解決できますか?
EDIT:追加情報として 、私はmake VERBOSE=1
てコンパイルする場合、それはcmakeのは、指定し、また、存在された場所に対応/usr/local/lib/libmetis.a
を含んと、リンカは、右のライブラリを探しているようです。私はnm /usr/local/lib/libmetis.a
とライブラリに見たときにまた、私は参照:
00000000000001c0 T METIS_WPartGraphKway
00000000000009c0 T METIS_WPartGraphRecursive
P.S:Ubuntuの17.04で、IはMETIS-5.1.0、METIS-4.0.3と試みており、また、sudo apt-get install libmetis-dev
で取り付けます。後者の場合、私はlibmetis.a
の代わりにlibmetis.so
を見つけますが、この場合もこれはcmakeによって正しく認識され、正しくリンカーが探していますが、最後に同じエラーが発生します。
また、私はを試しました。ソースmetis-5.1.0とmetis-3.0.6をUbuntu 14.04にインストールしましたが、同じ問題がありました。 多くの人がMETIS形式のthis pageで同じ質問をしているので、これは難しいと思われるエラーです。
私はまた、付加情報としてhere
を示唆するように、コンパイルコマンドの最後に-lmetis
を追加しようとしました、私はMETISソースフォルダ内grep WPartGraphKway
をしました。バージョン5.1.0にはこのような文字列はありません。バージョン4.0.3では、
表示されている実行可能ファイルに対して「未解決の参照」が報告されていますが、別の実行可能ファイル/ライブラリではありませんか? 'VERBOSE = 1'オプションを' make'するとコンパイルとリンクのために完全なコマンドラインが使用され、実際にmetisライブラリとのリンクが行われていることを確認できます。 – Tsyvarev
ありがとう、私は 'VERBOSE = 1'の出力で質問を編集しました –