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

Mark picture Mark · Nov 29, 2015 · Viewed 9.4k times · Source

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 :

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?

Answer

Florian picture Florian · Mar 7, 2017

Those variables are determined by (see OpenCVConfig.cmake for a more detailed description of 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