如何让CMake找到真正的静态库而不是动态包装器?

时间:2014-09-13 10:34:09

标签: cmake

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

2 个答案:

答案 0 :(得分:3)

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

 -l:[filename]

对于cmake

 target_link_libraries(target :libglew32.a)

答案 1 :(得分: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)