c++ - CMAKE find_library() 正在返回 NOTFOUND,我无法修复它
问题描述
我经历了无数的 stackoverflow 线程和 CMake wiki,但我不知道我做错了什么。我正在尝试查找一个 dll,特别是我生成的 assimp.dll,但是无论我做什么,find_library 宏都无法找到该 dll。我的 CMakeLists.txt 是
cmake_minimum_required(VERSION 3.17)
project(OpenGLBook)
set(CMAKE_CXX_STANDARD 20)
set(DLL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/dll")
set(SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src")
set(LIB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include")
list(APPEND CMAKE_FIND_ROOT_PATH "${DLL_DIR}/assimp") #these have been disabled and reenabled in all configurations possible I believe.
list(APPEND CMAKE_PREFIX_PATH "${DLL_DIR}/assimp")
set(SOURCE ${SRC_DIR}/main.cpp)
include_directories(${LIB_DIR}/learnopengl)
include_directories(${LIB_DIR}/stb_image)
add_executable(${PROJECT_NAME}
${INCLUDES}
${SOURCE})
target_include_directories(${PROJECT_NAME} PUBLIC "${SRC_DIR}")
# ASSIMP
set(ASSIMP_DIR "${LIB_DIR}/assimp")
set(ASSIMP_LIB_DIR "${DLL_DIR}/assimp")
message("-- Linking Assimp")
find_library(ASSIMP_LIB NAMES "assimp" HINTS "${ASSIMP_LIB_DIR}" REQUIRED)
target_link_libraries(${PROJECT_NAME} "assimp" ${ASSIMP_LIB})
include_directories(${ASSIMP_DIR})
#add_subdirectory("${DLL_DIR}/assimp")
#add_subdirectory("include/assimp")
#foreach(file "${ASSIMP_DIR}assimp")
# message("${file}")
#endforeach()
#message(${ASSIMP_DIR})
#add_library(ASSIMP_LIB SHARED IMPORTED)
#set_target_properties(ASSIMP_LIB PROPERTIES IMPORTED_LOCATION "${DLL_DIR}/assimp/assimp.dll")
#target_link_libraries(${PROJECT_NAME} "assimp" ASSIMP_LIB)
#link_directories(${DLL_DIR}/assimp)
#set_property(TARGET ASSIMP_LIB PROPERTY IMPORTED_LOCATION "dll/assimp/assimp-vc142-mt.dll")
#target_link_libraries(${PROJECT_NAME} "assimp" ASSIMP_LIB)
#add_library(ASSIMP_LIB STATIC IMPORTED)
#set_property(TARGET ASSIMP_LIB PROPERTY IMPORTED_LOCATION "dll/assimp/assimp-vc142-mt.dll")
#target_link_libraries(${PROJECT_NAME} "assimp" ASSIMP_LIB)
标记出来的所有东西都是我尝试过的无数东西,我有一个名为“assimp-vc142-mt.dll”的库,然后将其更改为“assimp.dll”,因为我没有想法。所有想法都来自线程CMake 链接到外部库。我得到错误
-- Using Win32 for window creation
-- Linking Assimp
CMake Error at CMakeLists.txt:63 (find_library):
Could not find ASSIMP_LIB using the following names: assimp
-- Configuring incomplete, errors occurred!
See also "C:/dev/OpenGLBookFixed/cmake-build-debug/CMakeFiles/CMakeOutput.log".
See also "C:/dev/OpenGLBookFixed/cmake-build-debug/CMakeFiles/CMakeError.log".
[Failed to reload]
因此阅读该错误我将“assimp”名称更改为“-lassimp”,将库重命名为“libassimp”,无数次添加并删除了“”,并尝试了许多我忘记的其他事情,但我仍然得到上述错误,或类似的东西。打印变量 ${ASSIMP_LIB_DIR} 会返回消息
C:/coding/OpenGLBookFixed/dll/assimp
并将该目录插入文件资源管理器使我进入库所在的位置,因此我知道我在寻找正确的位置。
我一直试图让它工作几个小时,但我没有想法,所以如果有人可以请告诉我我最有可能的简单问题,将不胜感激。
解决方案
推荐阅读
- php - 使用标签调用 PHP 脚本以显示从数据库检索到的编码图像
- typescript - 异步函数缺少返回语句?
- javascript - 为什么 NodeJS fs.stat() 在文件更改时不更新 file.mtime?
- c# - 如何动态生成50页的PDF文档?
- networking - 在客户端和 ISP 之间定位 Apache 流量服务器
- android - 尽管 FCM 控制台说交付成功,但未在 android 中收到 FCM 通知
- image - 枕头:如何显示 MNIST 数据?
- python - TclError:无效的命令名称“.4318456072”
- build - NUnit 将输出从 Build 更改为 Tests
- python - Python pandas数据框:找到E列为1且A列最大的行,在平局的情况下,考虑B、C、D列中最大的