Search code examples
linuxopencvcmakestatic-librariesstatic-linking

How do I tell cmake I want my project to link libraries statically?


I'm trying to build an OpenCV-based project using CMake, running on Linux. So far my CMakeLists.txt files looks something like

FIND_PACKAGE (OpenCV REQUIRED)
...
TARGET_LINK_LIBRARIES (my-executable ${OpenCV_LIBS})

but this results in dynamically linked libraries. How do I link with static libraries?


Solution

  • You build static OpenCV libraries by just setting the BUILD_SHARED_LIBS flag to false in CMake. Then all you need to do to build your own application with those static libraries is to add a dependency on OpenCV in your CMakeLists.txt:

    FIND_PACKAGE (OpenCV REQUIRED)
    ...
    TARGET_LINK_LIBRARIES (your-application ${OpenCV_LIBS})
    

    and CMake will take care of everything.