【问题标题】:How to make CMake find real static libraries instead of dynamic wrappers?如何让 CMake 找到真正的静态库而不是动态包装器?
【发布时间】:2014-09-13 10:34:08
【问题描述】:

我使用find_package 将外部库包含到我的 CMake 项目中。因为我想添加对静态链接的支持,所以我设置了set(BUILD_SHARED_LIBS FALSE)。但是,我仍然得到像 libglew32.dll.a 这样的库,它们只是使动态链接更容易的包装器。相反,我希望 CMake 找到存在于同一目录中的 libglew32.a。这是我使用的module to find GLEW

【问题讨论】:

    标签: cmake


    【解决方案1】:

    您始终可以使用文件名链接到确切的库。以下是您将使用的标志

     -l:[filename]
    

    对于cmake

     target_link_libraries(target :libglew32.a)
    

    【讨论】:

      【解决方案2】:

      在 linux 上执行此操作将使用所有静态库

      set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
      

      如果你正在构建外部库,通常我只是将它们包含在我的目标中

      target_link_libraries(myprogram
              ${LIBROCKET_LIBS_DIRS}/libRocketCore.a
              ${LIBROCKET_LIBS_DIRS}/libRocketControls.a)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-14
        • 1970-01-01
        • 1970-01-01
        • 2014-01-06
        • 1970-01-01
        • 2020-11-03
        相关资源
        最近更新 更多