From fb8dbe8f0c1d724a289e439474c640dff4c35b8b Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Tue, 16 Oct 2018 09:18:42 -0400 Subject: [PATCH] Add assimp cmake module --- CMakeLists.txt | 5 ++- cmake/Findassimp.cmake | 83 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+), 2 deletions(-) create mode 100644 cmake/Findassimp.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 100731e..e9b51b8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,6 +7,7 @@ set(CMAKE_CXX_STANDARD 14) find_package(SDL2 REQUIRED) find_package(Vulkan REQUIRED) +find_package(assimp REQUIRED) if(CMAKE_BUILD_TYPE STREQUAL "Debug") add_definitions(-DDEBUG) @@ -16,8 +17,8 @@ add_executable(Graph src/main.cpp src/renderer.cpp src/worldpass.cpp) -target_link_libraries(Graph PUBLIC SDL2::SDL2 SDL2::SDL2main ${Vulkan_LIBRARY} assimp) -target_include_directories(Graph PUBLIC include ${Vulkan_INCLUDE_DIRS}) +target_link_libraries(Graph PUBLIC SDL2::SDL2 SDL2::SDL2main ${Vulkan_LIBRARY} ${assimp_LIBRARIES}) +target_include_directories(Graph PUBLIC include ${Vulkan_INCLUDE_DIRS} ${assimp_INCLUDE_DIRS}) macro(compile_shader src) add_custom_command( diff --git a/cmake/Findassimp.cmake b/cmake/Findassimp.cmake new file mode 100644 index 0000000..6d464e3 --- /dev/null +++ b/cmake/Findassimp.cmake @@ -0,0 +1,83 @@ +if(CMAKE_SIZEOF_VOID_P EQUAL 8) + set(ASSIMP_ARCHITECTURE "64") +elseif(CMAKE_SIZEOF_VOID_P EQUAL 4) + set(ASSIMP_ARCHITECTURE "32") +endif(CMAKE_SIZEOF_VOID_P EQUAL 8) + +if(WIN32) + set(ASSIMP_ROOT_DIR CACHE PATH "ASSIMP root directory") + + # Find path of each library + find_path(ASSIMP_INCLUDE_DIR + NAMES + assimp/anim.h + HINTS + ${ASSIMP_ROOT_DIR}/include + ) + + if(MSVC12) + set(ASSIMP_MSVC_VERSION "vc120") + elseif(MSVC14) + set(ASSIMP_MSVC_VERSION "vc140") + endif(MSVC12) + + if(MSVC12 OR MSVC14) + + find_path(ASSIMP_LIBRARY_DIR + NAMES + assimp-${ASSIMP_MSVC_VERSION}-mt.lib + HINTS + ${ASSIMP_ROOT_DIR}/lib${ASSIMP_ARCHITECTURE} + ) + + find_library(ASSIMP_LIBRARY_RELEASE assimp-${ASSIMP_MSVC_VERSION}-mt.lib PATHS ${ASSIMP_LIBRARY_DIR}) + find_library(ASSIMP_LIBRARY_DEBUG assimp-${ASSIMP_MSVC_VERSION}-mtd.lib PATHS ${ASSIMP_LIBRARY_DIR}) + + set(ASSIMP_LIBRARY + optimized ${ASSIMP_LIBRARY_RELEASE} + debug ${ASSIMP_LIBRARY_DEBUG} + ) + + set(ASSIMP_LIBRARIES "ASSIMP_LIBRARY_RELEASE" "ASSIMP_LIBRARY_DEBUG") + + FUNCTION(ASSIMP_COPY_BINARIES TargetDirectory) + ADD_CUSTOM_TARGET(AssimpCopyBinaries + COMMAND ${CMAKE_COMMAND} -E copy ${ASSIMP_ROOT_DIR}/bin${ASSIMP_ARCHITECTURE}/assimp-${ASSIMP_MSVC_VERSION}-mtd.dll ${TargetDirectory}/Debug/assimp-${ASSIMP_MSVC_VERSION}-mtd.dll + COMMAND ${CMAKE_COMMAND} -E copy ${ASSIMP_ROOT_DIR}/bin${ASSIMP_ARCHITECTURE}/assimp-${ASSIMP_MSVC_VERSION}-mt.dll ${TargetDirectory}/Release/assimp-${ASSIMP_MSVC_VERSION}-mt.dll + COMMENT "Copying Assimp binaries to '${TargetDirectory}'" + VERBATIM) + ENDFUNCTION(ASSIMP_COPY_BINARIES) + + endif() + +else(WIN32) + + find_path( + assimp_INCLUDE_DIRS + NAMES postprocess.h scene.h version.h config.h cimport.h + PATHS /usr/include/assimp + ) + + find_library( + assimp_LIBRARIES + NAMES + assimp + PATHS + /usr/lib + ) + + if (assimp_INCLUDE_DIRS AND assimp_LIBRARIES) + SET(assimp_FOUND TRUE) + ENDIF (assimp_INCLUDE_DIRS AND assimp_LIBRARIES) + + if (assimp_FOUND) + if (NOT assimp_FIND_QUIETLY) + message(STATUS "Found asset importer library: ${assimp_LIBRARIES}") + endif (NOT assimp_FIND_QUIETLY) + else (assimp_FOUND) + if (assimp_FIND_REQUIRED) + message(FATAL_ERROR "Could not find asset importer library") + endif (assimp_FIND_REQUIRED) + endif (assimp_FOUND) + +endif(WIN32)