cmake_minimum_required(VERSION 3.10 FATAL_ERROR) project(nutil) include_directories(.) INCLUDE(CTest) #set(CMAKE_CXX_STANDARD 11) add_library (nutil-dynamic SHARED nutil.cc npoint.cc ndata.cc linear_algebra.cpp sparse_matrix.cpp ndisplaytofile.cc ) add_library (nutil-static STATIC EXCLUDE_FROM_ALL nutil.cc npoint.cc ndata.cc linear_algebra.cpp sparse_matrix.cpp ndisplaytofile.cc) SET_TARGET_PROPERTIES(nutil-static PROPERTIES OUTPUT_NAME "nutil") SET_TARGET_PROPERTIES(nutil-dynamic PROPERTIES OUTPUT_NAME "nutil") option(ENABLE_VTK_INTERFACE "Enable VTK integration targets" OFF) option(ENABLE_FLTK_INTERFACE "Enable FLTK integration targets" ON) option(ENABLE_OBJ_LOADER "Enable OBJ file format suppoort" ON) option(ENABLE_3MF_LOADER "Enable 3MF file format suppoort" OFF) #set(HAS_VTK_INTERFACE "FALSE") #set(HAS_FLTK_INTERFACE "FALSE") SET(HAS_VTK_INTERFACE "FALSE" CACHE INTERNAL "") SET(HAS_FLTK_INTERFACE "FALSE" CACHE INTERNAL "") include_directories(. ${nutil_BINARY_DIR}) set(NUTIL_EXTERNAL_LIBRARIES CACHE INTERNAL "" FORCE) if(ENABLE_OBJ_LOADER) set(OBJ_LOADER ON) set(OBJ_LOADER_DIRECTORY objloader/Source) include_directories(${OBJ_LOADER_DIRECTORY}) endif(ENABLE_OBJ_LOADER) if(ENABLE_3MF_LOADER) set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}") find_package(Lib3MF) if (LIB3MF_FOUND) message(STATUS "lib3mf: ${LIB3MF_VERSION}") include_directories(${LIB3MF_INCLUDE_DIRS}) set(NUTIL_EXTERNAL_LIBRARIES ${LIB3MF_LIBRARIES}) set(NUTIL_EXTERNAL_INCLUDES ${LIB3MF_INCLUDE_DIRS}) set(L3MF_LOADER ON) else() message(STATUS "lib3mf: Not Found") endif() endif(ENABLE_3MF_LOADER) if(ENABLE_VTK_INTERFACE) include_directories(. ${nutil_BINARY_DIR} vtkdisplay) add_subdirectory(vtkdisplay) set(INTERFACE_TYPE "VTK" CACHE STRING "Interface Type" FORCE) endif(ENABLE_VTK_INTERFACE) if(ENABLE_FLTK_INTERFACE) include_directories(. ${nutil_BINARY_DIR} fltkdisplay) add_subdirectory(fltkdisplay) set(INTERFACE_TYPE "FLTK" CACHE STRING "Interface Type" FORCE) endif(ENABLE_FLTK_INTERFACE) include_directories(. ${nutil_BINARY_DIR} ndisplay) add_subdirectory(ndisplay) set(NUTIL_DYNAMIC_LIBRARIES nutil-dynamic CACHE INTERNAL "nutil dynamic libraries" FORCE) set(NUTIL_STATIC_LIBRARIES nutil-static CACHE INTERNAL "nutil static libraries" FORCE) if(HAS_FLTK_INTERFACE OR HAS_VTK_INTERFACE) if(HAS_FLTK_INTERFACE) set(NUTIL_DYNAMIC_LIBRARIES ${NUTIL_DYNAMIC_LIBRARIES} fltkdisplay-dynamic ndisplay-dynamic CACHE INTERNAL "nutil dynamic libraries" FORCE) set(NUTIL_STATIC_LIBRARIES ${NUTIL_STATIC_LIBRARIES} fltkdisplay-static ndisplay-static CACHE INTERNAL "nutil static libraries" FORCE) endif(HAS_FLTK_INTERFACE) if(HAS_VTK_INTERFACE) set(NUTIL_DYNAMIC_LIBRARIES ${NUTIL_DYNAMIC_LIBRARIES} vtkdisplay-dynamic ndisplay-dynamic CACHE INTERNAL "nutil dynamic libraries" FORCE) set(NUTIL_STATIC_LIBRARIES ${NUTIL_STATIC_LIBRARIES} vtkdisplay-static ndisplay-static CACHE INTERNAL "nutil static libraries" FORCE) endif(HAS_VTK_INTERFACE) set(NUTIL_INCLUDE_DIRECTORIES ${nutil_SOURCE_DIR} ${nutil_SOURCE_DIR}/ndisplay ${nutil_BINARY_DIR} ${nutil_SOURCE_DIR}/vtkdisplay ${nutil_SOURCE_DIR}/fltkdisplay ${nutil_SOURCE_DIR}/${OBJ_LOADER_DIRECTORY} CACHE INTERNAL "nutil include dirs" FORCE) if (INTERFACE_TYPE STREQUAL VTK) set(INTERFACE_TYPE_VTK ON) endif (INTERFACE_TYPE STREQUAL VTK) if(INTERFACE_TYPE STREQUAL FLTK) set(INTERFACE_TYPE_FLTK ON) endif (INTERFACE_TYPE STREQUAL FLTK) if(INTERFACE_TYPE STREQUAL FILE) set(INTERFACE_TYPE_FILE ON) endif (INTERFACE_TYPE STREQUAL FILE) else(HAS_FLTK_INTERFACE OR HAS_VTK_INTERFACE) if(INTERFACE_TYPE STREQUAL FILE) set(INTERFACE_TYPE_FILE ON) endif (INTERFACE_TYPE STREQUAL FILE) set(NUTIL_DYNAMIC_LIBRARIES ${NUTIL_DYNAMIC_LIBRARIES} ndisplay-dynamic CACHE INTERNAL "nutil dynamic libraries" FORCE) set(NUTIL_STATIC_LIBRARIES ${NUTIL_STATIC_LIBRARIES} ndisplay-static CACHE INTERNAL "nutil static libraries" FORCE) set(NUTIL_INCLUDE_DIRECTORIES ${nutil_SOURCE_DIR} ${nutil_SOURCE_DIR}/ndisplay ${nutil_SOURCE_DIR}/${OBJ_LOADER_DIRECTORY} ${nutil_BINARY_DIR} CACHE INTERNAL "nutil include dirs" FORCE) endif(HAS_FLTK_INTERFACE OR HAS_VTK_INTERFACE) configure_file(nutilconfig.h.in nutilconfig.h) target_link_libraries (nutil-dynamic ${NUTIL_EXTERNAL_LIBRARIES} ) target_link_libraries (nutil-static ${NUTIL_EXTERNAL_LIBRARIES} ) if (UNIX) install(TARGETS nutil-dynamic) install(FILES nutil.h ${nutil_BINARY_DIR}/nutilconfig.h linear_algebra.h ndata.h npoint.h sparse_iterator.h sparse_matrix.h ndisplaytofile.h DESTINATION include) SET(CPACK_GENERATOR "DEB") SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "Eric Bechet") #required #SET(CPACK_DEBIAN_PACKAGE_DEPENDS "libfltk (>= 2.3.1-6), libgcc1 (>= 1:3.4.2-12)") endif() add_subdirectory(test)