首页 > 解决方案 > 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

并将该目录插入文件资源管理器使我进入库所在的位置,因此我知道我在寻找正确的位置。

我一直试图让它工作几个小时,但我没有想法,所以如果有人可以请告诉我我最有可能的简单问题,将不胜感激。

标签: c++dllcmake

解决方案


推荐阅读