代码之家  ›  专栏  ›  技术社区  ›  agnul

如何告诉cmake我希望我的项目静态链接库?

  •  18
  • agnul  · 技术社区  · 14 年前

    我正在尝试使用CMake构建一个基于OpenCV的项目,运行在Linux上。到目前为止我的 CMakeLists.txt 文件看起来像

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

    但这会导致动态链接的库。如何链接静态库?

    7 回复  |  直到 8 年前
        1
  •  11
  •   Fred    10 年前

    事实上,这个问题似乎已经解决了 OpenCVConfig.cmake OpenCV_STATIC 在你的 CMakeLists.txt . 即。

    set(OpenCV_STATIC ON)
    find_package(OpenCV REQUIRED)
    
        2
  •  10
  •   CODE-REaD    8 年前

    BUILD_SHARED_LIBS CMakeLists.txt :

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

    克马克会处理好一切的。

        3
  •  6
  •   jkerian    14 年前

    CMAKE_EXE_LINKER_FLAGS -static ).

    你用的是“简单方法”吗OpenCVConfig.cmake?或者更老的FindOpenCV.cmake?

        4
  •  5
  •   pszilard    14 年前

    我仍在寻找一个好的解决方案,使自己能够编译二进制文件“尽可能静态”,但我还没有找到优雅的解决方案。唯一可行的方法就是通过定制的FindXXXX模块实现所有功能。

        5
  •  3
  •   Cameron Lowell Palmer    4 年前

    在add\u library行中指定static。看到了吗 https://cmake.org/cmake/help/latest/command/add_library.html

    更正因为你正在寻找一个静态库的链接,我会看看 CMAKE_FIND_LIBRARY_SUFFIXES 财产

        6
  •  1
  •   pszilard    14 年前

    请注意 gcc拒绝链接

        7
  •  -1
  •   Li Gewei    6 年前
    SET (CMAKE_EXE_LINKER_FLAGS "-static")