C++ CMake';s find_library()显然没有';找不到图书馆
我希望CMake在同一文件夹中找到三个静态库。这是我的CMakeLists.txt中我正在努力解决的部分:C++ CMake';s find_library()显然没有';找不到图书馆,c++,cmake,libraries,ogre,C++,Cmake,Libraries,Ogre,我希望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_BU
# 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_LIB
、OGREOVERLAY_LIB
和OIS_LIB
都设置为NOTFOUND,但如果我尝试打印它们,我发现它们被设置为预期路径(甚至选择了后缀名和非后缀名之间的正确路径)。显然,所有库实际上都在预期的路径中
我做错了什么?添加${CMAKE\u SHARED\u LIBRARY\u PREFIX}和${CMAKE\u SHARED\u LIBRARY\u 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}")
find_library()
调用的结果会被缓存,但如果找不到,它应该再次尝试查找。那么在测试期间,您是否总是从空的二进制输出目录开始?在项目设置过程中-虽然仍在测试CMakeLists.txt
-我建议在find_library()
调用之前添加例如unset(OGREMAIN_LIB CACHE)
,以强制CMake每次搜索库。。。。三个变量ogrestain_LIB、OGREOVERLAY_LIB和OIS_LIB都设置为NOTFOUND,但是如果我尝试打印它们,我发现它们被设置了…
-那么,这些变量是-NOTFOUND
还是设置为某个路径?如何检查它们(通过CMake缓存中的message()
,等等)?关于擦除缓存的问题,我在重新加载项目(调用CMake)之前通过CLion的界面进行检查,但它们最终在CMake缓存中设置为-NOTFOUND(也通过CLion的图形界面进行检查)。至于打印他们的名字,我在最后一个find_library()
语句之后使用message(状态“path:${ogresiste_LIB}”)
(等等),然后打印期望的路径。