CMake 的 find_library() 显然找不到库

CMake's find_library() apparently doesn't locate libraries

本文关键字:找不到 find library CMake      更新时间:2023-10-16

我希望CMake在同一文件夹中找到三个静态库。这是我的CMakeList的一部分.txt我正在努力:

# Dependencies' directories
set(OGRE3D_DIR "D:/Data/Libs/ogre3D-1.10")
# Required libraries
find_library(OGREMAIN_LIB
        NAMES OgreMain OgreMain_d
        HINTS "${OGRE3D_DIR}/lib/${CMAKE_BUILD_TYPE}")
find_library(OGREOVERLAY_LIB
        NAMES OgreOverlay OgreOverlay_d
        HINTS "${OGRE3D_DIR}/lib/${CMAKE_BUILD_TYPE}")
find_library(OIS_LIB
        NAMES OIS OIS_d
        HINTS "${OGRE3D_DIR}/lib/${CMAKE_BUILD_TYPE}")
# Target
add_executable(Test Main.cpp)
# Library linking
target_link_libraries(Test
        ${OGREMAIN_LIB}
        ${OGREOVERLAY_LIB}
        ${OIS_LIB})

出于某种原因,三个变量OGREMAIN_LIBOGREOVERLAY_LIBOIS_LIB 都设置为 NOTFOUND,但如果我尝试打印它们,我发现它们被设置为预期的路径(即使是后缀和非后缀名称之间的正确路径也被选中(。显然,所有库实际上都在预期的路径中。

我在这里做错了什么?

像这样添加 ${CMAKE_SHARED_LIBRARY_PREFIX} 和 ${CMAKE_SHARED_LIBRARY_SUFFIX} 怎么样:

find_library(OGREMAIN_LIB
    NAMES ${CMAKE_SHARED_LIBRARY_PREFIX}OgreMain${CMAKE_SHARED_LIBRARY_SUFFIX} ${CMAKE_SHARED_LIBRARY_PREFIX}OgreMain_d${CMAKE_SHARED_LIBRARY_SUFFIX}
    HINTS "${OGRE3D_LIB_DIR}")