Dll 通过CMake安装后缺少ASIMP库
是否有合适的方法通过CMake安装和链接ASIMP Graphics.cmakeDll 通过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
...
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目录
设置冲突。