2016-05-30 1 views
8

私は特定の問題を解決するために紛失しています:私は原因を特定できません。OpenCVとCMakeバージョン3.5.2との比較CMake 2.X.X

システム: JETSON TX1、arm64カーネル、32bとユーザー空間、opencv4tegra

状況:使用を構築してきたプロジェクト:

find_package(OpenCV) 

そして、これがうまく働いたとまとめました。

フォルト:ソースからビルドし、CMake 3.5.2をインストールしました。今ではOpenCVに依存しているプロジェクトを構築することはできません。私はポイントを見つけることができないリンカエラーを取得:

opencv_dep_cudart 

私はこの点を中心に、問題がOpenCVCConfig.cmakeに起因すると仮定しています:ファイルのうち

# Import target "opencv_core" for configuration "Release" 
set_property(TARGET opencv_core APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) 
set_target_properties(opencv_core PROPERTIES 
    IMPORTED_LINK_INTERFACE_LIBRARIES_RELEASE "opencv_dep_cudart;opencv_dep_nppc;opencv_dep_nppi;opencv_dep_npps;dl;m;pthread;rt;tbb" 
    IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/libopencv_core.so.2.4.12" 
    IMPORTED_SONAME_RELEASE "libopencv_core.so.2.4" 
) 

/usr/share/OpenCV/OpenCVModules-release.cmake

しかし、これをOpenCVファイルであるため、CMakeのバージョン間でファイルは変更されません。だから、これはどのように処理される必要があります。

私のCMakeを2.8.12.2に戻すことで、手作業で再度ビルドすることができました。次に、OpenCVを使用するmakeコマンドの例を示します。正しいcudaライブラリに注意してください:

Linking CXX executable DuoInterfaceTest 
/usr/local/bin/cmake -E cmake_link_script CMakeFiles/DuoInterfaceTest.dir/link.txt --verbose=1 
/usr/bin/c++ -O2 -g -DNDEBUG -std=gnu++11 CMakeFiles/DuoInterfaceTest.dir/src/mainTest.cpp.o -o DuoInterfaceTest -L/home/ubuntu/catkin_ws/duointerface/lib/linux/arm -rdynamic libDuoInterface.a /usr/lib/libopencv_vstab.so.2.4.12 /usr/lib/libopencv_tegra.so.2.4.12 /usr/lib/libopencv_imuvstab.so.2.4.12 /usr/lib/libopencv_facedetect.so.2.4.12 /usr/lib/libopencv_esm_panorama.so.2.4.12 /usr/lib/libopencv_detection_based_tracker.so.2.4.12 /usr/lib/libopencv_videostab.so.2.4.12 /usr/lib/libopencv_video.so.2.4.12 /usr/lib/libopencv_ts.a /usr/lib/libopencv_superres.so.2.4.12 /usr/lib/libopencv_stitching.so.2.4.12 /usr/lib/libopencv_photo.so.2.4.12 /usr/lib/libopencv_objdetect.so.2.4.12 /usr/lib/libopencv_ml.so.2.4.12 /usr/lib/libopencv_legacy.so.2.4.12 /usr/lib/libopencv_imgproc.so.2.4.12 /usr/lib/libopencv_highgui.so.2.4.12 /usr/lib/libopencv_gpu.so.2.4.12 /usr/lib/libopencv_flann.so.2.4.12 /usr/lib/libopencv_features2d.so.2.4.12 /usr/lib/libopencv_core.so.2.4.12 /usr/lib/libopencv_contrib.so.2.4.12 /usr/lib/libopencv_calib3d.so.2.4.12 /usr/lib/libopencv_tegra.so.2.4.12 /usr/lib/libopencv_stitching.so.2.4.12 /usr/lib/libopencv_gpu.so.2.4.12 /usr/lib/libopencv_photo.so.2.4.12 /usr/lib/libopencv_legacy.so.2.4.12 /usr/local/cuda-7.0/lib/libcufft.so /usr/lib/libopencv_video.so.2.4.12 /usr/lib/libopencv_objdetect.so.2.4.12 /usr/lib/libopencv_ml.so.2.4.12 /usr/lib/libopencv_calib3d.so.2.4.12 /usr/lib/libopencv_features2d.so.2.4.12 /usr/lib/libopencv_highgui.so.2.4.12 /usr/lib/libopencv_imgproc.so.2.4.12 /usr/lib/libopencv_flann.so.2.4.12 /usr/lib/libopencv_core.so.2.4.12 /usr/local/cuda-7.0/lib/libcudart.so /usr/local/cuda-7.0/lib/libnppc.so /usr/local/cuda-7.0/lib/libnppi.so /usr/local/cuda-7.0/lib/libnpps.so -ldl -lm -lpthread -lrt -ltbb -lDUO -Wl,-rpath,/home/ubuntu/catkin_ws/duointerface/lib/linux/arm:/usr/local/cuda-7.0/lib 

考えられますか?新しいCMakeを私のシステムに残したいのですが、問題を解決するのに十分理解していません。これがシステム固有のものだと思うなら、私はその質問を取り下げます。

+0

私が2.4に依存するプロジェクトをビルドする場合、同じ問題があります。 –

+1

Okake、cmakeの回避策設定 'CUDA_USE_STATIC_CUDA_RUNTIME = false'が機能します –

答えて

2

マイケルMaireggerで述べたように、あなたは

sudo cmake .. -DCUDA_USE_STATIC_CUDA_RUNTIME=false 

を行うことにより、ビルドディレクトリにcmakeのために持っていますが、私は気づいた1つの余分なものは、私はその後makeにしようと私がない限り、それは動作しませんということですcmakeコマンド2回