Dll 通过CMake安装后缺少ASIMP库

Dll 通过CMake安装后缺少ASIMP库,dll,cmake,assimp,Dll,Cmake,Assimp,是否有合适的方法通过CMake安装和链接ASIMP Graphics.cmake ... message(STATUS "Building the ASSIMP") set(ASSIMP_BUILD_ASSIMP_TOOLS OFF) set(ASSIMP_BUILD_TESTS OFF) set(ASSIMP_INSTALL OFF) set(BUILD_SHARED_LIBS ON) add_subdirectory(${CMAKE_SOURCE_DIR}/applica

是否有合适的方法通过CMake安装和链接ASIMP

Graphics.cmake

...
message(STATUS "Building the ASSIMP")
set(ASSIMP_BUILD_ASSIMP_TOOLS OFF)
set(ASSIMP_BUILD_TESTS OFF)
set(ASSIMP_INSTALL OFF)
set(BUILD_SHARED_LIBS ON)
add_subdirectory(${CMAKE_SOURCE_DIR}/application/dependencies/ASSIMP)
install(
    TARGETS assimp
    RUNTIME DESTINATION ${CMAKE_BINARY_DIR}/bin 
    LIBRARY DESTINATION ${CMAKE_BINARY_DIR}/lib
    ARCHIVE DESTINATION ${CMAKE_BINARY_DIR}/lib 
)
message(STATUS "ASSIMP - Done!\n")
...
CMakeLists.txt看起来像:

...
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
...
include(Graphics)
set(DEP_EMSDK_LIBS
    soil2
    assimp
)
...
add_executable(${PROJECT_NAME} 
                    ${${PROJECT_NAME}_MAIN} 
                    ${${PROJECT_NAME}_SOURCES}
                    ${${PROJECT_NAME}_INCLUDES}
                    ${CFG_FILES}
                )
target_link_libraries(${PROJECT_NAME} ${DEP_LIBS}) 
target_include_directories(
        ${PROJECT_NAME} PUBLIC
        $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/application/includes>
        $<INSTALL_INTERFACE:${PROJECT_SOURCE_DIR}/application/includes>
) 
...
。。。
集合(CMAKE_存档_输出_目录${CMAKE_二进制_目录}/lib)
集合(CMAKE_库_输出_目录${CMAKE_二进制_目录}/lib)
集合(CMAKE_运行时_输出_目录${CMAKE_二进制_目录}/bin)
...
包括(图形)
set(DEP_EMSDK_LIBS
soil2
助理
)
...
添加可执行文件(${PROJECT\u NAME}
${${PROJECT\u NAME}\u MAIN}
${${PROJECT\u NAME}\u SOURCES}
${${PROJECT\u NAME}{u INCLUDES}
${CFG_文件}
)
目标链接库(${PROJECT\u NAME}${DEP\u LIBS})
目标目录包括目录(
${PROJECT_NAME}公共
$
$
) 
...

我已经清除了一批多余的员工。此外,我一直在尝试执行许多选项
安装(…)
,但结果是我总是缺少
bin
中的
assimp-vc142-mt.dll

如果必要,编译器是msvc,生成器是Visual Studio 2019。我在哪里承认了错误?

“但是,结果是我总是缺少库中的assimp-vc140-mt.dll。”-
.dll
是库的运行时部分,这是在中明确写的。根据您的
install()
调用,运行时部分放在
bin
中,而不是放在
lib
中。哦,在/bin中,我当然会修复它,谢谢。尽管如此,我检查了所有地方,您确定您将ASIMP构建为共享库,而不是静态库吗?请注意,
set(BUILD\u SHARED\u LIBS ON)
不会影响assimp,因为它设置了“normal”CMake变量,但assimp的
CMakeLists.txt
缓存变量用于此目的。(换句话说,如果您使用
-DBUILD\u SHARED\u LIBS=OFF
构建项目,那么Assimp将构建静态库)。顺便说一句,安装到二进制目录(
${CMAKE\u binary\u DIR}/bin
)看起来很奇怪。此外,此安装可能与您的
CMAKE\u RUNTIME\u OUTPUT\u目录
设置冲突。