Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Check where include/library path variables like OpenCV_LIBS point to in unix

When using some libraries like OpenCV with C/C++, variables like OpenCV_LIBS are used to point the compiler/linker to the relevant directories.

Examples using cmake:

include_directories( ${OpenCV_INCLUDE_DIRS} )
target_link_libraries( project_name ${OpenCV_LIBS} )

How can I check where such variables point at? I've tried typing set or printenv in terminal but it shows only some system variables. Also how can I set/change such variables?

like image 899
Mark Avatar asked Nov 29 '15 10:11

Mark


1 Answers

Those variables are determined by cmake (see OpenCVConfig.cmake for a more detailed description of opencv CMake variables available).

To see those values you can add message() calls after the find_package(OpenCV) call to your project's CMakeLists.txt:

find_package(OpenCV)

message(STATUS "OpenCV_INCLUDE_DIRS = ${OpenCV_INCLUDE_DIRS}")
message(STATUS "OpenCV_LIBS = ${OpenCV_LIBS}")

Alternatively you can run find_package via a CMake command line option.

Here are a few examples (the CMAKE_PREFIX_PATH part is optional if CMake is not able to find your libraries installation path automatically):

  1. MODE=COMPILE giving include directories (e.g. with MSVC compiler)

    $ cmake 
        --find-package 
        -DNAME=OpenCV 
        -DCOMPILER_ID=MSVC -DMSVC_VERSION=1700 
        -DLANGUAGE=CXX 
        -DMODE=COMPILE 
        -DCMAKE_PREFIX_PATH:PATH=/path/to/your/OpenCV/build
    
  2. MODE=LINK giving link libraries (e.g. with GNU compiler)

    $ cmake 
        --find-package 
        -DNAME=OpenCV 
        -DCOMPILER_ID=GNU 
        -DLANGUAGE=CXX 
        -DMODE=LINK 
        -DCMAKE_PREFIX_PATH:PATH=/path/to/your/OpenCV/build
    

Note: This CMake call will create a CMakeFiles sub-directory in your current working directory.


References

  • Using OpenCV with gcc and CMake
  • CMakeFindPackageMode CMake module documentation
like image 100
Florian Avatar answered Oct 20 '22 02:10

Florian