Linking problem mit OpenCV und CMake

Ich Schreibe ein Programm, das verwendet OpenCV (installiert in einem lokalen Verzeichnis, da ich nicht über root-Berechtigungen auf der Maschine), und ich habe geschrieben, die entsprechenden CMakeLists.txt Datei. Mein problem ist, dass die Kompilierung fehlschlägt bei der Anbindung der Bühne in verschiedene Arten (ich habe die drei Stunden versucht, all die verschiedenen vorgeschlagenen Lösungen auf dem web, also ich habe gesehen, viele Ergebnisse).
Hier sind die Konfigurationen/Ergebnisse, die machen mehr Sinn für mich, auch wenn Sie zu einem Fehler führen:
[in project_root/CMakeLists.txt]:

cmake_minimum_required(VERSION 2.8)
project(CUDA_learning)

set(OpenCV_INCLUDE_DIR "path/to/opencv_CUDA/include")
include_directories(${OpenCV_INCLUDE_DIR})
set(OpenCV_LIBS_DIR "path/to/opencv_CUDA/lib")
link_directories(${OpenCV_LIBS_DIR})
set(OpenCV_LIBS "opencv_core opencv_imgproc opencv_calib3d opencv_video opencv_features2d opencv_ml opencv_highgui opencv_objdetect opencv_contrib opencv_legacy opencv_gpu")

find_package(Boost COMPONENTS system filesystem program_options regex REQUIRED)
if(Boost_FOUND)
  include_directories(${Boost_INCLUDE_DIR})
else(Boost_FOUND)
  message(FATAL_ERROR "Cannot build application without Boost. Please set Boost_INCLUDE_DIR.")
endif(Boost_FOUND)

set(CMAKE_BUILD_TYPE debug)

add_definitions("-Wall")

set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/../bin)

subdirs (
  ../src
)

[in project_root/src/CMakeLists.txt]:

FILE(GLOB dir_source *.cc 2D/*.cc)
FILE(GLOB dir_header *.hh 2D/*.hh)

add_executable(${PROJECT_NAME} ${dir_source} ${dir_header})
target_link_libraries(${PROJECT_NAME} ${Boost_PROGRAM_OPTIONS_LIBRARY} ${Boost_FILESYSTEM_LIBRARY} ${Boost_SYSTEM_LIBRARY} ${OpenCV_LIBS})

Ergebnis:

Linking CXX executable ../../bin/CUDA_learning
c++: opencv_imgproc: No such file or directory
c++: opencv_calib3d: No such file or directory
c++: opencv_video: No such file or directory
c++: opencv_features2d: No such file or directory
c++: opencv_ml: No such file or directory
c++: opencv_highgui: No such file or directory
c++: opencv_objdetect: No such file or directory
c++: opencv_contrib: No such file or directory
c++: opencv_legacy: No such file or directory
c++: opencv_gpu: No such file or directory

Wenn, im Gegensatz zu den Empfehlungen im Netz, die ich setzen Sie ein "-l", bevor die OpenCV-library-name, den ich bekommen:

Linking CXX executable ../../bin/CUDA_learning
/usr/bin/ld: cannot find -lopencv_core
collect2: ld returned 1 exit status
make[2]: *** [../bin/CUDA_learning] Error 1
make[1]: *** [src/CMakeFiles/CUDA_learning.dir/all] Error 2
make: *** [all] Error 2

Weiß jemand, wie man dieses Problem lösen, was? Ich bin buchstäblich fahren verrückt auf das...
Vielen Dank im Voraus!
Cheers,
Rob

InformationsquelleAutor Rob | 2011-09-14
Schreibe einen Kommentar