के साथ समस्या को जोड़ना मैं एक प्रोग्राम लिख रहा हूं जो ओपनसीवी (स्थानीय निर्देशिका में स्थापित है, क्योंकि मेरे पास उस मशीन पर रूट अनुमति नहीं है) का उपयोग करता है, और मैंने संबंधित CMakeLists.txt फ़ाइल लिखी है। मेरी समस्या यह है कि संकलन अलग-अलग तरीकों से लिंकिंग चरण में विफल रहता है (मैंने वेब पर प्रस्तावित सभी अलग-अलग समाधानों की कोशिश करने में तीन घंटे बिताए हैं, इसलिए मैंने बहुत सारे परिणाम देखे हैं)। यहाँ आप विन्यास/परिणाम जो मेरे लिए अधिक मायने हैं, भले ही वे एक विफलता के लिए नेतृत्व: [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
)
[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})
परिणाम:
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
हैं, तो नेट पर दिए गए सिफारिशों के विपरीत, मैं एक "-l" OpenCV लाइब्रेरी नाम मैंने पहले डाल प्राप्त करें:
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
क्या कोई इस बात को हल करने के बारे में जानता है? मैं सचमुच इस पर पागल गाड़ी चला रहा हूं ... अग्रिम धन्यवाद! चीयर्स, रोब
हाय, आपके उत्तर के लिए धन्यवाद, मैं कोशिश की है, लेकिन अभी भी मैं त्रुटि ... – Rob
Hmmmm "-lopencv_core नहीं मिल सकता है" मिलता है ... क्या आप "उपनिर्देशिका" बदलते हैं करने के लिए "add_subdirectory" ? – DLRdave
मैं add_subdirectory के रूप में यह बदल दिया है ( $ {CMAKE_BINARY_DIR} /../ src ) लेकिन अभी भी परिणाम में कोई परिवर्तन नहीं :( – Rob