c++opencvcmakeinclude-pathlibrary-path

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 :

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?


Solution

  • 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