共有オブジェクトをcmakeの自分のコードにリンクするにはどうしたらいいですか?
私はOpenCVをリンクしたいと思っています。私はlibopencv _ ***。so.3.1なんかを自分のソフトウェアパッケージに入れています。cmakeの共有オブジェクトをリンクするには?
その場合、次のような行がこの質問の答えと考えています。
...
find_package(OpenCV 3.1)
include_directories(${OpenCV_INCLUDE_DIRS})
link_directories(${OpenCV_LIBRARY_DIRS})
...
target_link_libraries(my_node ${OpenCV_LIBRARIES})
しかし、ここにこの問題があります。 私は以前に/ usr/includeと/ usr/lib/x86_64-linux-gnuの下にOpenCV 2.4.8をインストールしましたが、今はOpenCV 3.1.0をローカルディレクトリ "〜/ Libs/opencv"コードから。 コードをコンパイルするとき、OpenCV 2.4.8が優先され、使用されます。
この場合、CMakeLists.txtをどのように記述する必要がありますか?
現在、私は以下のように書いています。
...
set(CMAKE_PREFIX_PATH ${HOME}/Libs/opencv)
include(${HOME}/Libs/opencv/share/OpenCV/OpenCVConfig.cmake)
find_package(OpenCV 3.1)
set(OpenCV_INCLUDE_DIRS ${HOME}/Libs/opencv/include)
include_directories(${OpenCV_INCLUDE_DIRS)
set(OpenCV_LIBRARY_DIRS ${HOME}/Libs/opencv/lib)
link_directories(${OpenCV_LIBRARY_DIRS})
...
上記のCMakeLists.txtの種類が私を助けました。
実行可能ファイルがlibopencv _ ***。so.3.1と同じディレクトリにコピーされた場合、上記のCMakeLists.txtが機能します。
"make"が失敗します。 しかし、私はそれを実行可能ファイルを含むディレクトリ上で独立させたいと思います。
この問題はどうすればよいですか? ありがとうございます。
4時間以内にアップアップしましたか? – usr1234567
BEFOREとAFTERを使用してライブラリの順序を調整する必要があります。 – usr1234567
これを見てください:https://cmake.org/Wiki/CMake_RPATH_handlingそれは助けることができました – Amadeus