https://github.com/wildmeshing/TriWild
Revision 899bcbf4e50fa1da89b5a52db5c598a2ac0136d9 authored by Yixin Hu on 05 May 2020, 18:36:51 UTC, committed by GitHub on 05 May 2020, 18:36:51 UTC
1 parent 03567ad
Tip revision: 899bcbf4e50fa1da89b5a52db5c598a2ac0136d9 authored by Yixin Hu on 05 May 2020, 18:36:51 UTC
update paper link
update paper link
Tip revision: 899bcbf
CMakeLists.txt
################################################################################
# General Information
################################################################################
cmake_minimum_required(VERSION 3.3)
project(TriWild)
################################################################################
set(THIRD_PARTY_DIR ${CMAKE_CURRENT_SOURCE_DIR}/extern/)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
if(NOT CMAKE_BUILD_TYPE)
message(STATUS "No build type selected, default to Release")
set(CMAKE_BUILD_TYPE "Release")
endif()
get_directory_property(HAS_PARENT PARENT_DIRECTORY)
if(HAS_PARENT)
set(TRIWILD_TOPLEVEL_PROJECT OFF)
else()
set(TRIWILD_TOPLEVEL_PROJECT ON)
endif()
################################################################################
# Build static binaries
#set(BUILD_SHARED_LIBS OFF)
set(BUILD_STATIC_RUNTIME OFF)
set(BUILD_DYNAMIC_RUNTIME ON)
# Use folder in Visual Studio
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
# Export compile flags (used for autocompletion of the C++ code)
set(CMAKE_EXPORT_COMPILE_COMMANDS 1)
# Generate position independent code
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
#ADD_DEFINITIONS("-D_DLL")
include(TriWildDownloadExternal)
if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
# If we use static library, we link with the static C++ runtime.
foreach(config ${CMAKE_CONFIGURATION_TYPES})
string(TOUPPER ${config} config)
string(REPLACE /MD /MT CMAKE_C_FLAGS_${config} "${CMAKE_C_FLAGS_${config}}")
string(REPLACE /MD /MT CMAKE_CXX_FLAGS_${config} "${CMAKE_CXX_FLAGS_${config}}")
string(REPLACE /MDd /MTd CMAKE_C_FLAGS_${config} "${CMAKE_C_FLAGS_${config}}")
string(REPLACE /MDd /MTd CMAKE_CXX_FLAGS_${config} "${CMAKE_CXX_FLAGS_${config}}")
endforeach()
endif()
triwild_download_aabbcc()
triwild_download_geogram()
triwild_download_igl()
triwild_download_nlopt()
################################################################################
# 3rd party libraries
################################################################################
# libigl library
# libigl
option(LIBIGL_USE_STATIC_LIBRARY "Use libigl as static library" OFF)
option(LIBIGL_WITH_ANTTWEAKBAR "Use AntTweakBar" OFF)
option(LIBIGL_WITH_CGAL "Use CGAL" OFF)
option(LIBIGL_WITH_COMISO "Use CoMiso" OFF)
option(LIBIGL_WITH_CORK "Use Cork" OFF)
option(LIBIGL_WITH_EMBREE "Use Embree" OFF)
option(LIBIGL_WITH_LIM "Use LIM" OFF)
option(LIBIGL_WITH_MATLAB "Use Matlab" OFF)
option(LIBIGL_WITH_MOSEK "Use MOSEK" OFF)
option(LIBIGL_WITH_XML "Use XML" OFF)
option(LIBIGL_WITH_PNG "Use PNG" OFF)
option(LIBIGL_WITH_PYTHON "Use Python" OFF)
option(LIBIGL_WITH_TETGEN "Use Tetgen" OFF)
option(LIBIGL_WITH_TRIANGLE "Use Triangle" OFF)
# gui
option(LIBIGL_WITH_OPENGL "Use OpenGL" OFF)
option(LIBIGL_WITH_OPENGL_GLFW "Use GLFW" OFF)
option(LIBIGL_WITH_OPENGL_GLFW_IMGUI "Use ImGui" OFF)
option(LIBIGL_WITH_VIEWER "Use OpenGL viewer" OFF)
find_package(LIBIGL REQUIRED QUIET)
find_package(GMPTriWild)
IF(NOT ${GMP_FOUND})
MESSAGE(FATAL_ERROR "Cannot find GMP")
ENDIF()
################################################################################
set(SOURCE_FILES
extern/aabbcc/src/AABB.h extern/aabbcc/src/AABB.cc
extern/pymesh/MshLoader.h extern/pymesh/MshLoader.cpp
extern/pymesh/MshSaver.h extern/pymesh/MshSaver.cpp
extern/pymesh/Exception.h
extern/CLI11.hpp
src/triwild/Logger.h
src/triwild/Args.cpp src/triwild/Args.h
src/triwild/meshio.hpp src/triwild/meshio.cpp
src/triwild/auto_p_bases.hpp src/triwild/auto_p_bases.cpp
src/triwild/auto_det_checker.hpp src/triwild/auto_det_checker.cpp
src/triwild/Curves.h src/triwild/Curves.cpp
src/triwild/CurvedTriUntangler.hpp src/triwild/CurvedTriUntangler.cpp
src/triwild/Rational.h
src/triwild/Point_2.h src/triwild/Point_2f.h
src/triwild/TrimeshElements.h
src/triwild/triangulation.cpp src/triwild/triangulation.h
src/triwild/AMIPS.h src/triwild/AMIPS.cpp
src/triwild/optimization.cpp src/triwild/optimization.h
src/triwild/edge_collapsing.cpp src/triwild/edge_collapsing.h
src/triwild/edge_splitting.cpp src/triwild/edge_splitting.h
src/triwild/edge_swapping.cpp src/triwild/edge_swapping.h
src/triwild/vertex_smoothing.cpp src/triwild/vertex_smoothing.h
src/triwild/FeatureElements.cpp src/triwild/FeatureElements.h
src/triwild/feature_preprocessing.cpp src/triwild/feature_preprocessing.h
src/triwild/feature.cpp src/triwild/feature.h
src/triwild/reference_triangle.cpp src/triwild/reference_triangle.h
src/triwild/do_triwild.cpp src/triwild/do_triwild.h)
add_definitions(-D_REF_VS=\"${CMAKE_CURRENT_SOURCE_DIR}/src/triwild/reference_triangle_vertices.txt\")
add_definitions(-D_REF_FS=\"${CMAKE_CURRENT_SOURCE_DIR}/src/triwild/reference_triangle_faces.txt\")
option(NLOPT_PYTHON OFF)
option(NLOPT_GUILE OFF)
option(NLOPT_SWIG OFF)
option(NLOPT_OCTAVE OFF)
option(NLOPT_MATLAB OFF)
option(NLOPT_TESTS OFF)
option(NLOPT_FORTRAN OFF)
option(BUILD_SHARED_LIBS OFF)
add_subdirectory(${THIRD_PARTY_DIR}/nlopt)
add_library(triwild_lib ${SOURCE_FILES})
# Geogram library
include(geogram)
if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
target_compile_definitions(triwild_lib PUBLIC -D_ENABLE_EXTENDED_ALIGNED_STORAGE)
# If we use static library, we link with the static C++ runtime.
foreach(config ${CMAKE_CONFIGURATION_TYPES})
string(TOUPPER ${config} config)
string(REPLACE /MD /MT CMAKE_C_FLAGS_${config} "${CMAKE_C_FLAGS_${config}}")
string(REPLACE /MD /MT CMAKE_CXX_FLAGS_${config} "${CMAKE_CXX_FLAGS_${config}}")
string(REPLACE /MDd /MTd CMAKE_C_FLAGS_${config} "${CMAKE_C_FLAGS_${config}}")
string(REPLACE /MDd /MTd CMAKE_CXX_FLAGS_${config} "${CMAKE_CXX_FLAGS_${config}}")
endforeach()
endif()
target_include_directories(triwild_lib PUBLIC ${GMP_INCLUDE_DIRS})
target_include_directories(triwild_lib PUBLIC "src/triwild")
target_link_libraries(triwild_lib PUBLIC geogram igl::core ${GMP_LIBRARIES} nlopt)
if(NOT TARGET json)
triwild_download_json()
add_library(json INTERFACE)
target_include_directories(json SYSTEM INTERFACE ${THIRD_PARTY_DIR}/json/include)
endif()
target_link_libraries(triwild_lib PUBLIC geogram igl::core ${GMP_LIBRARIES} nlopt json)
if(TRIWILD_TOPLEVEL_PROJECT)
#add_executable(TriWild main.cpp UIPanel.hpp UIPanel.cpp)
add_executable(TriWild src/main.cpp)
target_link_libraries(TriWild triwild_lib)
endif()
Computing file changes ...