c++ - 如何強制 C++ 編譯器使用安裝版本的不同版本的包,使用?

  显示原文与译文双语对照的内容

我在機器上安裝的ROS Fuerte使用 opencv 2.2. 我想使用 2.4.9版剛剛安裝的。 它的位置是 /home/polar/soft/lib/opencv/opencv-2.4.9/build/lib

請用 CMake? 從我的搜索看,find_library 似乎會解決這個問題,但是不能讓它工作。

=====我在我的cpp代碼中包含了


 #include <opencv2/core/core.hpp>
 #include <opencv2/highgui/highgui.hpp>
 #include <opencv2/opencv.hpp>
 #include"opencv2/imgproc/imgproc.hpp"

===========在這裡我的指令


cmake_minimum_required(VERSION 2.8)
include($ENV{ROS_ROOT}/core/rosbuild/rosbuild.cmake)

rosbuild_init()
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)

rosbuild_genmsg()
rosbuild_gensrv()


# GSL
find_package( PkgConfig REQUIRED)
pkg_check_modules( gsl REQUIRED gsl )

SET(corners_opencv_flag ok)

#*******************************************************************
#*******************************************************************

#****** CORNERS OPENCV

#*******************************************************************
#*******************************************************************
if(corners_opencv_flag)

 #---
 SET(execFiles_corner_opencv
 corner_v1

 )

 #---
 foreach(file_ros ${execFiles_corner_opencv})
 rosbuild_add_executable(${file_ros} computer-vision/corners/${file_ros}.cpp ) 
 endforeach(file_ros)

 #---
endif(corners_opencv_flag)


#-------------------
# STACK 
#--------------------

SET(FILES_TO_RUN
 ${execFiles_corner_opencv} 
 )


#=======================================================
#
# CUSTOM LIBRARIES
#
#
#=======================================================
PROJECT(VOLCANO)
SET(SRC ${VOLCANO_SOURCE_DIR}/src)


#******* boost
find_package( Boost REQUIRED COMPONENTS program_options regex )
include_directories( ${Boost_INCLUDE_DIRS} )

if(Boost_FOUND)
 message("nn Boost found nn")
endif()

find_package(OpenCV REQUIRED PATHS/home/polar/soft/lib/opencv/opencv-2.4.9/cmake)


#===== Calculus
include_directories(${SRC}/calculus)
include_directories(${SRC}/calculus/matrix)
SET(MY_LIB
 ${MY_LIB}
 Calculus
 CholeskyDecompose
 )


#-------------------------------------------
# Linking the executables against the

#-------------------------------------------

foreach(file2link ${FILES_TO_RUN})

 target_link_libraries(${file2link} 
 ${MY_LIB} 
 ${MY_LIB} 
 ${gsl_LIBRARIES}
 ${Boost_PROGRAM_OPTIONS_LIBRARY} ${Boost_REGEX_LIBRARY}
 ${OpenCV_LIB}
 )

endforeach(file2link) 


#--- sources folders
ADD_SUBDIRECTORY(src)

时间: 原作者:

將這裡內容添加到 CMakeLists.txt 中,替換以前的find_package(OpenCV) 行:


find_package(OpenCV REQUIRED PATHS/home/polar/soft/lib/opencv/opencv-2.4.9/cmake)

在你的opencv安裝中應該有一個插件目錄。

就像我所懷疑的那樣 target_link_libraries(${file2link}. . .. ${OpenCV_LIB}) 問題是:OpenCV_LIB 似乎已經分配。

現在,我以這種方式鏈接 opencv,它很有用:


find_package(OpenCVV 2.4.9 PATHS/home/polar/soft/lib/opencv/opencv-2.4.9/cmake)
...
target_link_libraries(${file2link}. . .. ${OpenCVV_LIB})

事實上我只是使用了另一個 NAME 但是 OpenCV

@texasflood, 感謝你的幫助。

原作者:
...