diff --git a/CMakeLists.txt b/CMakeLists.txt index d9b68205c1..25d86a2744 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,7 +17,7 @@ endif() set(CMAKE_CXX_STANDARD 17) # available options are [98, 11, 14, 17. 20] -list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/CMake") +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") find_package(Python3 3.9 EXACT REQUIRED COMPONENTS Interpreter Development) if (NOT APPLE) @@ -123,11 +123,11 @@ if (SHAPEWORKS_GUI) endif() ### vtk -find_package(VTK 8.2.0) +find_package(VTK 9.1.0) if (NOT VTK_FOUND) message(FATAL_ERROR "VTK is required, but could not be found! Make sure path to VTKConfig.cmake is included in CMAKE_PREFIX_PATH") endif() -include(${VTK_USE_FILE}) +#include(${VTK_USE_FILE}) ### Eigen find_package (Eigen3 3.3 REQUIRED NO_MODULE) @@ -170,10 +170,16 @@ if(USE_OPENMP) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS} -fPIC") endif(USE_OPENMP) +SET(CMAKE_INSTALL_LIBDIR lib) + if(APPLE) set(CMAKE_INSTALL_RPATH "@executable_path/../lib") else() - set(CMAKE_INSTALL_RPATH "$ORIGIN/../lib") + # set(CMAKE_INSTALL_RPATH "$ORIGIN/../lib") + set(CMAKE_SKIP_BUILD_RPATH FALSE) + set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) + set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) + set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}") endif() include_directories("${CMAKE_CURRENT_SOURCE_DIR}") @@ -254,13 +260,12 @@ message(STATUS "CMAKE_SHARED_LINKER_FLAGS: ${CMAKE_SHARED_LINKER_FLAGS}") set(SHAPEWORKS_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) set(SHAPEWORKS_LIBS Project) -set(SHAPEWORKS_CMAKE_CFG_DEST_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} - CACHE PATH "Default location to install CMake config files") +set(SHAPEWORKS_CMAKE_CFG_DEST_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}) install(TARGETS igl igl_common EXPORT ShapeWorksTargets - ARCHIVE DESTINATION lib - RUNTIME DESTINATION lib - LIBRARY DESTINATION lib + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} PUBLIC_HEADER DESTINATION include ) @@ -271,7 +276,7 @@ install(EXPORT ShapeWorksTargets include(CMakePackageConfigHelpers) -configure_package_config_file(CMake/ShapeWorksConfig.cmake.in +configure_package_config_file(cmake/ShapeWorksConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/ShapeWorksConfig.cmake INSTALL_DESTINATION ${SHAPEWORKS_CMAKE_CFG_DEST_DIR} PATH_VARS SHAPEWORKS_INCLUDE_DIR) @@ -283,9 +288,7 @@ write_basic_package_version_file(ShapeWorksConfigVersion.cmake install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ShapeWorksConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/ShapeWorksConfigVersion.cmake - ${CMAKE_CURRENT_SOURCE_DIR}/CMake/FindXLNT.cmake - ${CMAKE_CURRENT_SOURCE_DIR}/CMake/FindLIBIGL.cmake - ${CMAKE_CURRENT_SOURCE_DIR}/CMake/FindACVD.cmake + ${CMAKE_CURRENT_SOURCE_DIR}/cmake/FindXLNT.cmake + ${CMAKE_CURRENT_SOURCE_DIR}/cmake/FindLIBIGL.cmake + ${CMAKE_CURRENT_SOURCE_DIR}/cmake/FindACVD.cmake DESTINATION ${SHAPEWORKS_CMAKE_CFG_DEST_DIR}) - - diff --git a/Examples/C++/CMakeLists.txt b/Examples/C++/CMakeLists.txt index d18237a90d..a2400ae7ea 100644 --- a/Examples/C++/CMakeLists.txt +++ b/Examples/C++/CMakeLists.txt @@ -7,9 +7,11 @@ set(CMAKE_CXX_STANDARD 17) # Find ShapeWorks find_package(ShapeWorks REQUIRED) +SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--disable-new-dtags") + # Find ITK -find_package(ITK REQUIRED) -include(${ITK_USE_FILE}) +#find_package(ITK REQUIRED) +#include(${ITK_USE_FILE}) add_executable(HelloShapeWorksItk HelloShapeWorksItk.cpp) diff --git a/Examples/C++/HelloShapeWorksItk.cpp b/Examples/C++/HelloShapeWorksItk.cpp index 175110961b..5fe3712288 100644 --- a/Examples/C++/HelloShapeWorksItk.cpp +++ b/Examples/C++/HelloShapeWorksItk.cpp @@ -5,6 +5,8 @@ #include "itkMesh.h" #include "itkRegularSphereMeshSource.h" #include "itkMeshFileWriter.h" +#include "itkMeshIOFactory.h" +#include "itkVTKPolyDataMeshIOFactory.h" // shapeworks includes #include @@ -44,6 +46,10 @@ void create_sphere(double radius, std::string name) { } int main() { + + itk::VTKPolyDataMeshIOFactory::RegisterOneFactory(); + // auto registeredIOs = itk::ObjectFactoryBase::CreateAllInstance( "itkMeshIOBase" ); + typedef itk::Image< unsigned short, 3 > ImageType; ImageType::Pointer image = ImageType::New(); @@ -54,7 +60,7 @@ int main() { std::cout << "Step 1: Use ITK to generate input data\n"; for (int i=5;i<9;i++) { - auto filename = "mesh" + std::to_string(5) + ".vtk"; + auto filename = "mesh" + std::to_string(i) + ".vtk"; std::cout << "Creating input file: " << filename << "\n"; create_sphere(i, filename); auto subject = std::make_shared(); diff --git a/ExternalLibs/tinyxml/CMakeLists.txt b/ExternalLibs/tinyxml/CMakeLists.txt index 456bb71334..254aa196dc 100755 --- a/ExternalLibs/tinyxml/CMakeLists.txt +++ b/ExternalLibs/tinyxml/CMakeLists.txt @@ -7,8 +7,8 @@ else(TARGET tinyxml) endif(TARGET tinyxml) install(TARGETS tinyxml EXPORT ShapeWorksTargets - ARCHIVE DESTINATION lib - RUNTIME DESTINATION lib - LIBRARY DESTINATION lib + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} PUBLIC_HEADER DESTINATION include ) diff --git a/ExternalLibs/trimesh2/CMakeLists.txt b/ExternalLibs/trimesh2/CMakeLists.txt index 84c7977b38..05cbee71f1 100644 --- a/ExternalLibs/trimesh2/CMakeLists.txt +++ b/ExternalLibs/trimesh2/CMakeLists.txt @@ -16,8 +16,8 @@ if (UNIX) endif() install(TARGETS trimesh2 EXPORT ShapeWorksTargets - ARCHIVE DESTINATION lib - RUNTIME DESTINATION lib - LIBRARY DESTINATION lib + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} PUBLIC_HEADER DESTINATION include ) diff --git a/Libs/Alignment/CMakeLists.txt b/Libs/Alignment/CMakeLists.txt index 2f79c3eba2..1190e6db6f 100644 --- a/Libs/Alignment/CMakeLists.txt +++ b/Libs/Alignment/CMakeLists.txt @@ -27,8 +27,8 @@ target_link_libraries(Alignment PUBLIC ) install(TARGETS Alignment EXPORT ShapeWorksTargets - ARCHIVE DESTINATION lib - RUNTIME DESTINATION lib - LIBRARY DESTINATION lib + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} PUBLIC_HEADER DESTINATION include ) diff --git a/Libs/Analyze/CMakeLists.txt b/Libs/Analyze/CMakeLists.txt index fd472cbba2..f779957fd8 100644 --- a/Libs/Analyze/CMakeLists.txt +++ b/Libs/Analyze/CMakeLists.txt @@ -62,8 +62,8 @@ set_target_properties(Analyze PROPERTIES PUBLIC_HEADER "${Analyze_headers}") install(TARGETS Analyze EXPORT ShapeWorksTargets - ARCHIVE DESTINATION lib - RUNTIME DESTINATION lib - LIBRARY DESTINATION lib + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} PUBLIC_HEADER DESTINATION include/Analyze ) diff --git a/Libs/Common/CMakeLists.txt b/Libs/Common/CMakeLists.txt index ee7a566f36..0123b48f59 100644 --- a/Libs/Common/CMakeLists.txt +++ b/Libs/Common/CMakeLists.txt @@ -30,8 +30,8 @@ target_link_libraries(Common set_target_properties(Common PROPERTIES PUBLIC_HEADER "${Common_headers}") install(TARGETS Common EXPORT ShapeWorksTargets - ARCHIVE DESTINATION lib - RUNTIME DESTINATION lib - LIBRARY DESTINATION lib + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} PUBLIC_HEADER DESTINATION include ) diff --git a/Libs/Groom/CMakeLists.txt b/Libs/Groom/CMakeLists.txt index 8d9906d28b..a712b2ea03 100644 --- a/Libs/Groom/CMakeLists.txt +++ b/Libs/Groom/CMakeLists.txt @@ -24,8 +24,8 @@ target_include_directories(Groom PUBLIC ) install(TARGETS Groom EXPORT ShapeWorksTargets - ARCHIVE DESTINATION lib - RUNTIME DESTINATION lib - LIBRARY DESTINATION lib + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} PUBLIC_HEADER DESTINATION include/Groom ) diff --git a/Libs/Image/CMakeLists.txt b/Libs/Image/CMakeLists.txt index 3debe18576..41f7c7f753 100644 --- a/Libs/Image/CMakeLists.txt +++ b/Libs/Image/CMakeLists.txt @@ -28,8 +28,8 @@ set_target_properties(Image PROPERTIES PUBLIC_HEADER "${Image_headers}" ) install(TARGETS Image EXPORT ShapeWorksTargets - ARCHIVE DESTINATION lib - RUNTIME DESTINATION lib - LIBRARY DESTINATION lib + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} PUBLIC_HEADER DESTINATION include/Image ) diff --git a/Libs/Mesh/CMakeLists.txt b/Libs/Mesh/CMakeLists.txt index 4c8789a889..a3346ebadd 100644 --- a/Libs/Mesh/CMakeLists.txt +++ b/Libs/Mesh/CMakeLists.txt @@ -56,9 +56,9 @@ set_target_properties(Mesh PROPERTIES PUBLIC_HEADER ) install(TARGETS Mesh EXPORT ShapeWorksTargets - ARCHIVE DESTINATION lib - RUNTIME DESTINATION lib - LIBRARY DESTINATION lib + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} PUBLIC_HEADER DESTINATION include/Mesh ) diff --git a/Libs/Optimize/CMakeLists.txt b/Libs/Optimize/CMakeLists.txt index 7368e9b662..b0aca74b92 100644 --- a/Libs/Optimize/CMakeLists.txt +++ b/Libs/Optimize/CMakeLists.txt @@ -51,8 +51,8 @@ target_include_directories(Optimize PUBLIC set_target_properties(Optimize PROPERTIES PUBLIC_HEADER "${Optimize_headers}") install(TARGETS Optimize EXPORT ShapeWorksTargets - ARCHIVE DESTINATION lib - RUNTIME DESTINATION lib - LIBRARY DESTINATION lib + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} PUBLIC_HEADER DESTINATION include/Optimize ) diff --git a/Libs/Particles/CMakeLists.txt b/Libs/Particles/CMakeLists.txt index 3e4307cd13..726fad52df 100644 --- a/Libs/Particles/CMakeLists.txt +++ b/Libs/Particles/CMakeLists.txt @@ -42,8 +42,8 @@ set_target_properties(Particles PROPERTIES PUBLIC_HEADER ) install(TARGETS Particles EXPORT ShapeWorksTargets - ARCHIVE DESTINATION lib - RUNTIME DESTINATION lib - LIBRARY DESTINATION lib + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} PUBLIC_HEADER DESTINATION include ) diff --git a/Libs/Project/CMakeLists.txt b/Libs/Project/CMakeLists.txt index 89096fd757..28bfecc3f0 100644 --- a/Libs/Project/CMakeLists.txt +++ b/Libs/Project/CMakeLists.txt @@ -37,8 +37,8 @@ set_target_properties(Project PROPERTIES PUBLIC_HEADER "${HEADERS}") install(TARGETS Project EXPORT ShapeWorksTargets - ARCHIVE DESTINATION lib - RUNTIME DESTINATION lib - LIBRARY DESTINATION lib + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} PUBLIC_HEADER DESTINATION include/Project ) diff --git a/Libs/Utils/CMakeLists.txt b/Libs/Utils/CMakeLists.txt index 3ec583a550..a50b7b07f6 100755 --- a/Libs/Utils/CMakeLists.txt +++ b/Libs/Utils/CMakeLists.txt @@ -34,8 +34,8 @@ set_target_properties(Utils PROPERTIES PUBLIC_HEADER ) install(TARGETS Utils EXPORT ShapeWorksTargets - ARCHIVE DESTINATION lib - RUNTIME DESTINATION lib - LIBRARY DESTINATION lib + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} PUBLIC_HEADER DESTINATION include/Utils ) diff --git a/Testing/CMakeLists.txt b/Testing/CMakeLists.txt index bbecf10d73..df9e3534d5 100644 --- a/Testing/CMakeLists.txt +++ b/Testing/CMakeLists.txt @@ -36,9 +36,9 @@ target_link_libraries(Testing set_target_properties(Testing PROPERTIES PUBLIC_HEADER "${Testing_headers}") install(TARGETS Testing - ARCHIVE DESTINATION lib - RUNTIME DESTINATION lib - LIBRARY DESTINATION lib + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} PUBLIC_HEADER DESTINATION include ) diff --git a/CMake/DefaultBuildType.cmake b/cmake/DefaultBuildType.cmake similarity index 100% rename from CMake/DefaultBuildType.cmake rename to cmake/DefaultBuildType.cmake diff --git a/CMake/FindACVD.cmake b/cmake/FindACVD.cmake similarity index 100% rename from CMake/FindACVD.cmake rename to cmake/FindACVD.cmake diff --git a/CMake/FindGEOMETRYCENTRAL.cmake b/cmake/FindGEOMETRYCENTRAL.cmake similarity index 100% rename from CMake/FindGEOMETRYCENTRAL.cmake rename to cmake/FindGEOMETRYCENTRAL.cmake diff --git a/CMake/FindLIBIGL.cmake b/cmake/FindLIBIGL.cmake similarity index 100% rename from CMake/FindLIBIGL.cmake rename to cmake/FindLIBIGL.cmake diff --git a/CMake/FindXLNT.cmake b/cmake/FindXLNT.cmake similarity index 100% rename from CMake/FindXLNT.cmake rename to cmake/FindXLNT.cmake diff --git a/CMake/ShapeWorksConfig.cmake.in b/cmake/ShapeWorksConfig.cmake.in similarity index 79% rename from CMake/ShapeWorksConfig.cmake.in rename to cmake/ShapeWorksConfig.cmake.in index 1a41793212..4c5c05f0e5 100644 --- a/CMake/ShapeWorksConfig.cmake.in +++ b/cmake/ShapeWorksConfig.cmake.in @@ -19,6 +19,14 @@ add_definitions(-DXLNT_STATIC=1) ### ACVD find_dependency (ACVD REQUIRED) +### Json library +find_dependency(nlohmann_json 3.10.5 REQUIRED) + +find_dependency (ITK) + +#find_dependency (Eigen 3.3 REQUIRED NO_MODULE) + +find_dependency (VTK) ### Libigl set include path #find_dependency(LIBIGL REQUIRED QUIET) @@ -26,8 +34,6 @@ find_dependency (ACVD REQUIRED) find_dependency(Boost REQUIRED COMPONENTS filesystem) -### Json library -find_dependency(nlohmann_json 3.10.5 REQUIRED) ### spdlog library find_dependency(spdlog 1.10.0 REQUIRED) @@ -46,8 +52,13 @@ find_dependency(pybind11 2.5.0 REQUIRED) check_required_components(shapeworks) -#include_directories(${SHAPEWORKS_INCLUDE_DIR}) +if(@USE_OPENMP@) + find_dependency(OpenMP) + add_definitions(-DSW_USE_OPENMP) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS} -fPIC") +endif() if(NOT TARGET shapeworks::shapeworks) - include("${SHAPEWORKS_CMAKE_DIR}/ShapeworksTargets.cmake") + include("${SHAPEWORKS_CMAKE_DIR}/ShapeWorksTargets.cmake") endif()