Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[SofaAssimp] Fix the FindAssimp.cmake #4326

Merged
merged 4 commits into from
Feb 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions applications/plugins/SofaAssimp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/")

### Dependencies
find_package(Sofa.Core REQUIRED)
sofa_find_package(Assimp REQUIRED)
sofa_find_package(assimp REQUIRED)
sofa_find_package(Sofa.Component.Constraint.Projective REQUIRED)
sofa_find_package(Sofa.Component.Mass REQUIRED)
sofa_find_package(Sofa.Component.Mapping REQUIRED)
Expand All @@ -35,7 +35,7 @@ sofa_find_package(Flexible QUIET)
# Create the plugin library.
add_library(${PROJECT_NAME} SHARED ${HEADER_FILES} ${SOURCE_FILES} ${README_FILES})
set_target_properties(${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "-DSOFA_BUILD_SOFAASSIMP")
target_link_libraries(${PROJECT_NAME} PUBLIC ${ASSIMP_LIBRARY} Sofa.Core Sofa.Component.Constraint.Projective Sofa.Component.Mass Sofa.Component.Mapping Sofa.GL.Component.Rendering3D Sofa.Component.StateContainer Sofa.Component.Collision.Geometry)
target_link_libraries(${PROJECT_NAME} PUBLIC ${ASSIMP_LIBRARIES} Sofa.Core Sofa.Component.Constraint.Projective Sofa.Component.Mass Sofa.Component.Mapping Sofa.GL.Component.Rendering3D Sofa.Component.StateContainer Sofa.Component.Collision.Geometry)

if(image_FOUND)
target_link_libraries(${PROJECT_NAME} PUBLIC image)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,136 +1,137 @@
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)

# First try to find assimp in CONFIG mode on the system
find_package(Assimp NO_MODULE QUIET
PATHS /usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}/cmake
)

# If not found, try to manually find it
if(NOT ASSIMP_INCLUDE_DIR OR NOT Assimp_FOUND)
if(CMAKE_SYSTEM_NAME STREQUAL Windows)
# Use ASSIMP_ROOT_DIR as user input for Assimp location
set(ASSIMP_ROOT_DIR CACHE PATH "Assimp root directory")

find_path(ASSIMP_INCLUDE_DIR
NAMES assimp/postprocess.h
PATHS ${ASSIMP_ROOT_DIR}/include
DOC "The directory where assimp headers reside"
)

if(MSVC12)
set(ASSIMP_MSVC_VERSION "vc120")
elseif(MSVC14)
# First look for vc140 build and if not found try vc141
find_path(ASSIMP_LIBRARY_DIR
NAMES assimp-vc140-mt.lib
HINTS
${ASSIMP_ROOT_DIR}/lib${ASSIMP_ARCHITECTURE}
${ASSIMP_ROOT_DIR}/lib
${ASSIMP_ROOT_DIR}/lib/x64
)

if(ASSIMP_LIBRARY_DIR)
set(ASSIMP_MSVC_VERSION "vc140")
else()
set(ASSIMP_MSVC_VERSION "vc141")
endif()
else()
set(ASSIMP_MSVC_VERSION "")
endif()

if(NOT ASSIMP_LIBRARY_DIR)
find_path(ASSIMP_LIBRARY_DIR
NAMES assimp-${ASSIMP_MSVC_VERSION}-mt.lib
HINTS
${ASSIMP_ROOT_DIR}/lib${ASSIMP_ARCHITECTURE}
${ASSIMP_ROOT_DIR}/lib
${ASSIMP_ROOT_DIR}/lib/x64
)
endif()

find_library(ASSIMP_LIBRARY_DEBUG
NAMES assimp-${ASSIMP_MSVC_VERSION}-mtd.lib
PATHS
${ASSIMP_LIBRARY_DIR}
${ASSIMP_ROOT_DIR}/lib
DOC "The assimp debug library"
)

find_library(ASSIMP_LIBRARY_RELEASE
NAMES assimp-${ASSIMP_MSVC_VERSION}-mt.lib
PATHS
${ASSIMP_LIBRARY_DIR}
${ASSIMP_ROOT_DIR}/lib
DOC "The assimp release library"
)

find_path(ASSIMP_BIN_DIR
NAMES assimp-${ASSIMP_MSVC_VERSION}-mt.dll
HINTS
${ASSIMP_ROOT_DIR}/bin${ASSIMP_ARCHITECTURE}
${ASSIMP_ROOT_DIR}/bin
${ASSIMP_ROOT_DIR}/bin/x64
)

if(ASSIMP_LIBRARY_RELEASE AND ASSIMP_BIN_DIR)
if(ASSIMP_LIBRARY_DEBUG)
set(ASSIMP_LIBRARY
optimized ${ASSIMP_LIBRARY_RELEASE}
debug ${ASSIMP_LIBRARY_DEBUG}
)
else()
set(ASSIMP_LIBRARY ${ASSIMP_LIBRARY_RELEASE})
endif()

set(ASSIMP_DLL ${ASSIMP_BIN_DIR}/assimp-${ASSIMP_MSVC_VERSION}-mt.dll)
set(Assimp_FOUND TRUE)
else()
set(Assimp_FOUND FALSE)
endif()
else()
find_path(ASSIMP_INCLUDE_DIR
NAMES assimp/postprocess.h assimp/scene.h assimp/version.h assimp/config.h assimp/cimport.h
PATHS
/usr/include
/usr/local/include
/sw/include
/opt/local/include
DOC "The directory where assimp headers reside"
)

find_library(ASSIMP_LIBRARY
NAMES assimp
PATHS
/usr/local/lib/
/usr/lib64
/usr/lib
/usr/local/lib64
/usr/local/lib
/sw/lib
/opt/local/lib
DOC "The assimp library"
)

if(ASSIMP_INCLUDE_DIR AND ASSIMP_LIBRARY)
set(Assimp_FOUND TRUE)
endif()
endif()
endif()

if(${CMAKE_FIND_PACKAGE_NAME}_FOUND)
if(NOT ${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY)
message(STATUS "Assimp found. Library is ${ASSIMP_LIBRARY} and include dir is ${ASSIMP_INCLUDE_DIR}")
endif()
else()
if(${CMAKE_FIND_PACKAGE_NAME}_FIND_REQUIRED)
set(error_message "Assimp not found.")
if(CMAKE_SYSTEM_NAME STREQUAL Windows AND NOT ASSIMP_ROOT_DIR)
set(error_message "${error_message} Please set ASSIMP_ROOT_DIR to locate Assimp.")
endif()
message(FATAL_ERROR "${error_message}")
endif()
endif()
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)

# First try to find assimp in CONFIG mode on the system
find_package(assimp NO_MODULE QUIET)


# If not found, try to manually find it
if(NOT ASSIMP_INCLUDE_DIRS OR NOT assimp_FOUND)
if(CMAKE_SYSTEM_NAME STREQUAL Windows)
# Use ASSIMP_ROOT_DIR as user input for Assimp location
set(ASSIMP_ROOT_DIR CACHE PATH "Assimp root directory")

find_path(ASSIMP_INCLUDE_DIRS
NAMES assimp/postprocess.h
PATHS ${ASSIMP_ROOT_DIR}/include
DOC "The directory where assimp headers reside"
)

if(MSVC12)
set(ASSIMP_MSVC_VERSION "vc120")
elseif(MSVC14)
# First look for vc140 build and if not found try vc141
find_path(ASSIMP_LIBRARY_DIR
NAMES assimp-vc140-mt.lib
HINTS
${ASSIMP_ROOT_DIR}/lib${ASSIMP_ARCHITECTURE}
${ASSIMP_ROOT_DIR}/lib
${ASSIMP_ROOT_DIR}/lib/x64
)

if(ASSIMP_LIBRARY_DIR)
set(ASSIMP_MSVC_VERSION "vc140")
else()
set(ASSIMP_MSVC_VERSION "vc141")
endif()
elseif (MSVC17)
set(ASSIMP_MSVC_VERSION "vc143")
else()
set(ASSIMP_MSVC_VERSION "")
endif()

if(NOT ASSIMP_LIBRARY_DIR)
find_path(ASSIMP_LIBRARY_DIR
NAMES assimp-${ASSIMP_MSVC_VERSION}-mt.lib
HINTS
${ASSIMP_ROOT_DIR}/lib${ASSIMP_ARCHITECTURE}
${ASSIMP_ROOT_DIR}/lib
${ASSIMP_ROOT_DIR}/lib/x64
)
endif()

find_library(ASSIMP_LIBRARY_DEBUG
NAMES assimp-${ASSIMP_MSVC_VERSION}-mtd.lib
PATHS
${ASSIMP_LIBRARY_DIR}
${ASSIMP_ROOT_DIR}/lib
DOC "The assimp debug library"
)

find_library(ASSIMP_LIBRARY_RELEASE
NAMES assimp-${ASSIMP_MSVC_VERSION}-mt.lib
PATHS
${ASSIMP_LIBRARY_DIR}
${ASSIMP_ROOT_DIR}/lib
DOC "The assimp release library"
)

find_path(ASSIMP_BIN_DIR
NAMES assimp-${ASSIMP_MSVC_VERSION}-mt.dll
HINTS
${ASSIMP_ROOT_DIR}/bin${ASSIMP_ARCHITECTURE}
${ASSIMP_ROOT_DIR}/bin
${ASSIMP_ROOT_DIR}/bin/x64
)

if(ASSIMP_LIBRARY_RELEASE AND ASSIMP_BIN_DIR)
if(ASSIMP_LIBRARY_DEBUG)
set(ASSIMP_LIBRARY
optimized ${ASSIMP_LIBRARY_RELEASE}
debug ${ASSIMP_LIBRARY_DEBUG}
)
else()
set(ASSIMP_LIBRARY ${ASSIMP_LIBRARY_RELEASE})
endif()

set(ASSIMP_DLL ${ASSIMP_BIN_DIR}/assimp-${ASSIMP_MSVC_VERSION}-mt.dll)
set(assimp_FOUND TRUE)
else()
set(assimp_FOUND FALSE)
endif()
else()
find_path(ASSIMP_INCLUDE_DIRS
NAMES assimp/postprocess.h assimp/scene.h assimp/version.h assimp/config.h assimp/cimport.h
PATHS
/usr/include
/usr/local/include
/sw/include
/opt/local/include
DOC "The directory where assimp headers reside"
)

find_library(ASSIMP_LIBRARY
NAMES assimp
PATHS
/usr/local/lib/
/usr/lib64
/usr/lib
/usr/local/lib64
/usr/local/lib
/sw/lib
/opt/local/lib
DOC "The assimp library"
)

if(ASSIMP_INCLUDE_DIRS AND ASSIMP_LIBRARY)
set(assimp_FOUND TRUE)
endif()
endif()
endif()

if(assimp_FOUND)
if(NOT assimp_FIND_QUIETLY)
message(STATUS "Assimp found. Library is ${ASSIMP_LIBRARIES} and include dir is ${ASSIMP_INCLUDE_DIRS}")
endif()
else()
if(${CMAKE_FIND_PACKAGE_NAME}_FIND_REQUIRED)
set(error_message "Assimp not found.")
if(CMAKE_SYSTEM_NAME STREQUAL Windows AND NOT ASSIMP_ROOT_DIR)
set(error_message "${error_message} Please set ASSIMP_ROOT_DIR to locate Assimp.")
endif()
message(FATAL_ERROR "${error_message}")
endif()
endif()
Loading