CMake的find_library()显然不能定位库

wgx48brx  于 2022-11-11  发布在  其他
关注(0)|答案(1)|浏览(174)

我想让CMake在同一个文件夹中找到三个静态库。这是我的CMakeLists.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,但是如果我尝试打印它们,我发现它们被设置为预期的路径(甚至在带后缀和不带后缀的名称之间选择了正确的一个)。
"我做错了什么"

6l7fqoea

6l7fqoea1#

如果按如下方式添加${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}")

相关问题