diff --git a/CMakeLists.txt b/CMakeLists.txt index 1c3690e630d1019d27ddccfd8a644b2ed44d68cd..fbed9cb2da28311ab3c95adc9c41ac89f35763c2 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,6 +5,8 @@ cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR) set( CMAKE_CXX_STANDARD_REQUIRED TRUE ) set( CMAKE_CXX_STANDARD 11 ) +set(OpenMesh_RootDir ${CMAKE_CURRENT_LIST_DIR}) + enable_testing() # Only set project name if OpenMesh is built as stand-alone library @@ -133,7 +135,13 @@ else() set (OPENMESH_LIBRARY_DIR "${_OPENMESH_LIBRARY_DIR}" CACHE PATH "The directory where the OpenMesh libraries can be found.") endif() -add_subdirectory (Doc) +if ( NOT DEFINED OPENMESH_DOCS ) + set( OPENMESH_DOCS false CACHE BOOL "Enable or disable building of documentation" ) +endif() + +if (OPENMESH_DOCS) + add_subdirectory (Doc) +endif() # ======================================================================== # Bundle generation (Targets exist, now configure them) @@ -175,6 +183,20 @@ endif() # ======================================================================== +# Generate openmesh.pc file + +set(DEST_DIR "${CMAKE_INSTALL_PREFIX}") +set(PRIVATE_LIBS "-lOpenMeshCore -lOpenMeshTools") + +configure_file("openmesh.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/openmesh.pc" @ONLY) + +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/openmesh.pc DESTINATION ${CMAKE_INSTALL_PREFIX}/libdata/pkgconfig) + +# generate target file + +install(EXPORT OpenMeshConfig DESTINATION share/OpenMesh/cmake) + +export(TARGETS OpenMeshCore OpenMeshTools FILE OpenMeshConfig.cmake) # display results acg_print_configure_header (OPENMESH "OpenMesh") diff --git a/openmesh.pc.in b/openmesh.pc.in new file mode 100644 index 0000000000000000000000000000000000000000..99c3437dad4e582e64c44e96c08497abe02daf9f --- /dev/null +++ b/openmesh.pc.in @@ -0,0 +1,11 @@ +prefix=@DEST_DIR@ +exec_prefix=${prefix} +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: libOpenMesh +Description: OpenMesh library +Version: @OPENMESH_VERSION_MAJOR@.@OPENMESH_VERSION_MINOR@ + +Libs: -L${libdir} @PRIVATE_LIBS@ +Cflags: -I${includedir} diff --git a/src/OpenMesh/Core/CMakeLists.txt b/src/OpenMesh/Core/CMakeLists.txt index 753e20ac264ef405de21622145c1beb1d96bddc7..845000546b0ed6dc84c97886228f08c78aef7843 100644 --- a/src/OpenMesh/Core/CMakeLists.txt +++ b/src/OpenMesh/Core/CMakeLists.txt @@ -132,4 +132,12 @@ install(DIRECTORY IO/ PATTERN "Debian*" EXCLUDE ) endif () +target_include_directories(OpenMeshCore PUBLIC + $ + $) + +install(TARGETS OpenMeshCore EXPORT OpenMeshConfig + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) diff --git a/src/OpenMesh/Tools/CMakeLists.txt b/src/OpenMesh/Tools/CMakeLists.txt index f00145b144bc15016b9402c7075b0fddcdac546e..cdc782e09fa3cb872b05c3440cd64f5168d11c9d 100644 --- a/src/OpenMesh/Tools/CMakeLists.txt +++ b/src/OpenMesh/Tools/CMakeLists.txt @@ -1,118 +1,126 @@ -include (ACGCommon) - -include_directories ( - ../.. - ${CMAKE_CURRENT_SOURCE_DIR} -) - -# source code directories -set (directories - . - Decimater - Dualizer - Smoother - Subdivider/Adaptive/Composite - Subdivider/Uniform/Composite - Subdivider/Uniform - Utils - VDPM -) - -# collect all header and source files -acg_append_files (headers "*.hh" ${directories}) -acg_append_files (sources "*.cc" ${directories}) - -IF(WIN32 AND NOT MINGW) - acg_append_files (sources "*.c" ${directories}) -ENDIF(WIN32 AND NOT MINGW) - -# Disable Library installation when not building OpenMesh on its own but as part of another project! -if ( NOT ${PROJECT_NAME} MATCHES "OpenMesh") - set(ACG_NO_LIBRARY_INSTALL true) -endif() - - -if (WIN32) - - if ( OPENMESH_BUILD_SHARED ) - add_definitions( -DOPENMESHDLL -DBUILDOPENMESHDLL) - acg_add_library (OpenMeshTools SHARED ${sources} ${headers}) - else() - # OpenMesh has no dll exports so we have to build a static library on windows - acg_add_library (OpenMeshTools STATIC ${sources} ${headers}) - endif() - -else () - acg_add_library (OpenMeshTools SHAREDANDSTATIC ${sources} ${headers}) - set_target_properties (OpenMeshTools PROPERTIES VERSION ${OPENMESH_VERSION_MAJOR}.${OPENMESH_VERSION_MINOR} - SOVERSION ${OPENMESH_VERSION_MAJOR}.${OPENMESH_VERSION_MINOR} ) -endif () - -target_link_libraries (OpenMeshTools OpenMeshCore) - -IF( NOT WIN32 ) - target_link_libraries (OpenMeshToolsStatic OpenMeshCoreStatic) -ENDIF(NOT WIN32) - -if ( (${PROJECT_NAME} MATCHES "OpenMesh") AND BUILD_APPS ) - - if ( WIN32 ) - if ( NOT "${CMAKE_GENERATOR}" MATCHES "MinGW Makefiles" ) - # let bundle generation depend on target - add_dependencies (fixbundle OpenMeshTools) - endif() - endif() - - # Add tools as dependency before fixbundle - if (APPLE) - # let bundle generation depend on target - add_dependencies (fixbundle OpenMeshTools) - add_dependencies (fixbundle OpenMeshToolsStatic) - endif() - -endif() - - -# Install Header Files (Apple) -if ( NOT ACG_PROJECT_MACOS_BUNDLE AND APPLE ) - FILE(GLOB files_install_Decimater "${CMAKE_CURRENT_SOURCE_DIR}/Decimater/*.hh" ) - FILE(GLOB files_install_Dualizer "${CMAKE_CURRENT_SOURCE_DIR}/Dualizer/*.hh" ) - FILE(GLOB files_install_KERNEL_OSG "${CMAKE_CURRENT_SOURCE_DIR}/Kernel_OSG/*.hh" ) - FILE(GLOB files_install_Smoother "${CMAKE_CURRENT_SOURCE_DIR}/Smoother/*.hh" ) - FILE(GLOB files_install_Subdivider_Adaptive "${CMAKE_CURRENT_SOURCE_DIR}/Subdivider/Adaptive/Composite/*.hh" ) - FILE(GLOB files_install_Subdivider_Uniform "${CMAKE_CURRENT_SOURCE_DIR}/Subdivider/Uniform/*.hh" ) - FILE(GLOB files_install_Subdivider_Uniform_Composite "${CMAKE_CURRENT_SOURCE_DIR}/Subdivider/Uniform/Composite/*.hh" ) - FILE(GLOB files_install_Utils "${CMAKE_CURRENT_SOURCE_DIR}/Utils/*.hh" "${CMAKE_CURRENT_SOURCE_DIR}/Utils/getopt.h" ) - FILE(GLOB files_install_VDPM "${CMAKE_CURRENT_SOURCE_DIR}/VDPM/*.hh" ) - INSTALL(FILES ${files_install_Decimater} DESTINATION include/OpenMesh/Tools/Decimater ) - INSTALL(FILES ${files_install_Dualizer} DESTINATION include/OpenMesh/Tools/Dualizer ) - INSTALL(FILES ${files_install_KERNEL_OSG} DESTINATION include/OpenMesh/Tools/Kernel_OSG ) - INSTALL(FILES ${files_install_Smoother} DESTINATION include/OpenMesh/Tools/Smoother ) - INSTALL(FILES ${files_install_Subdivider_Adaptive} DESTINATION include/OpenMesh/Tools/Subdivider/Adaptive/Composite ) - INSTALL(FILES ${files_install_Subdivider_Uniform} DESTINATION include/OpenMesh/Tools/Subdivider/Uniform ) - INSTALL(FILES ${files_install_Subdivider_Uniform_Composite} DESTINATION include/OpenMesh/Tools/Subdivider/Uniform/Composite ) - INSTALL(FILES ${files_install_Utils} DESTINATION include/OpenMesh/Tools/Utils ) - INSTALL(FILES ${files_install_VDPM} DESTINATION include/OpenMesh/Tools/VDPM ) -endif() - - -# Only install if the project name matches OpenMesh. -if (NOT APPLE AND ${PROJECT_NAME} MATCHES "OpenMesh") - -# Install Header Files -install(DIRECTORY . - DESTINATION include/OpenMesh/Tools - FILES_MATCHING - PATTERN "*.hh" - PATTERN "CVS" EXCLUDE - PATTERN ".svn" EXCLUDE - PATTERN "tmp" EXCLUDE - PATTERN "Templates" EXCLUDE - PATTERN "Debian*" EXCLUDE) - -#install the config file -install(FILES Utils/getopt.h DESTINATION include/OpenMesh/Tools/Utils) - -endif () - - +include (ACGCommon) + +include_directories ( + ../.. + ${CMAKE_CURRENT_SOURCE_DIR} +) + +# source code directories +set (directories + . + Decimater + Dualizer + Smoother + Subdivider/Adaptive/Composite + Subdivider/Uniform/Composite + Subdivider/Uniform + Utils + VDPM +) + +# collect all header and source files +acg_append_files (headers "*.hh" ${directories}) +acg_append_files (sources "*.cc" ${directories}) + +IF(WIN32 AND NOT MINGW) + acg_append_files (sources "*.c" ${directories}) +ENDIF(WIN32 AND NOT MINGW) + +# Disable Library installation when not building OpenMesh on its own but as part of another project! +if ( NOT ${PROJECT_NAME} MATCHES "OpenMesh") + set(ACG_NO_LIBRARY_INSTALL true) +endif() + + +if (WIN32) + + if ( OPENMESH_BUILD_SHARED ) + add_definitions( -DOPENMESHDLL -DBUILDOPENMESHDLL) + acg_add_library (OpenMeshTools SHARED ${sources} ${headers}) + else() + # OpenMesh has no dll exports so we have to build a static library on windows + acg_add_library (OpenMeshTools STATIC ${sources} ${headers}) + endif() + +else () + acg_add_library (OpenMeshTools SHAREDANDSTATIC ${sources} ${headers}) + set_target_properties (OpenMeshTools PROPERTIES VERSION ${OPENMESH_VERSION_MAJOR}.${OPENMESH_VERSION_MINOR} + SOVERSION ${OPENMESH_VERSION_MAJOR}.${OPENMESH_VERSION_MINOR} ) +endif () + +target_link_libraries (OpenMeshTools OpenMeshCore) + +IF( NOT WIN32 ) + target_link_libraries (OpenMeshToolsStatic OpenMeshCoreStatic) +ENDIF(NOT WIN32) + +if ( (${PROJECT_NAME} MATCHES "OpenMesh") AND BUILD_APPS ) + + if ( WIN32 ) + if ( NOT "${CMAKE_GENERATOR}" MATCHES "MinGW Makefiles" ) + # let bundle generation depend on target + add_dependencies (fixbundle OpenMeshTools) + endif() + endif() + + # Add tools as dependency before fixbundle + if (APPLE) + # let bundle generation depend on target + add_dependencies (fixbundle OpenMeshTools) + add_dependencies (fixbundle OpenMeshToolsStatic) + endif() + +endif() + + +# Install Header Files (Apple) +if ( NOT ACG_PROJECT_MACOS_BUNDLE AND APPLE ) + FILE(GLOB files_install_Decimater "${CMAKE_CURRENT_SOURCE_DIR}/Decimater/*.hh" ) + FILE(GLOB files_install_Dualizer "${CMAKE_CURRENT_SOURCE_DIR}/Dualizer/*.hh" ) + FILE(GLOB files_install_KERNEL_OSG "${CMAKE_CURRENT_SOURCE_DIR}/Kernel_OSG/*.hh" ) + FILE(GLOB files_install_Smoother "${CMAKE_CURRENT_SOURCE_DIR}/Smoother/*.hh" ) + FILE(GLOB files_install_Subdivider_Adaptive "${CMAKE_CURRENT_SOURCE_DIR}/Subdivider/Adaptive/Composite/*.hh" ) + FILE(GLOB files_install_Subdivider_Uniform "${CMAKE_CURRENT_SOURCE_DIR}/Subdivider/Uniform/*.hh" ) + FILE(GLOB files_install_Subdivider_Uniform_Composite "${CMAKE_CURRENT_SOURCE_DIR}/Subdivider/Uniform/Composite/*.hh" ) + FILE(GLOB files_install_Utils "${CMAKE_CURRENT_SOURCE_DIR}/Utils/*.hh" "${CMAKE_CURRENT_SOURCE_DIR}/Utils/getopt.h" ) + FILE(GLOB files_install_VDPM "${CMAKE_CURRENT_SOURCE_DIR}/VDPM/*.hh" ) + INSTALL(FILES ${files_install_Decimater} DESTINATION include/OpenMesh/Tools/Decimater ) + INSTALL(FILES ${files_install_Dualizer} DESTINATION include/OpenMesh/Tools/Dualizer ) + INSTALL(FILES ${files_install_KERNEL_OSG} DESTINATION include/OpenMesh/Tools/Kernel_OSG ) + INSTALL(FILES ${files_install_Smoother} DESTINATION include/OpenMesh/Tools/Smoother ) + INSTALL(FILES ${files_install_Subdivider_Adaptive} DESTINATION include/OpenMesh/Tools/Subdivider/Adaptive/Composite ) + INSTALL(FILES ${files_install_Subdivider_Uniform} DESTINATION include/OpenMesh/Tools/Subdivider/Uniform ) + INSTALL(FILES ${files_install_Subdivider_Uniform_Composite} DESTINATION include/OpenMesh/Tools/Subdivider/Uniform/Composite ) + INSTALL(FILES ${files_install_Utils} DESTINATION include/OpenMesh/Tools/Utils ) + INSTALL(FILES ${files_install_VDPM} DESTINATION include/OpenMesh/Tools/VDPM ) +endif() + + +# Only install if the project name matches OpenMesh. +if (NOT APPLE AND ${PROJECT_NAME} MATCHES "OpenMesh") + +# Install Header Files +install(DIRECTORY . + DESTINATION include/OpenMesh/Tools + FILES_MATCHING + PATTERN "*.hh" + PATTERN "CVS" EXCLUDE + PATTERN ".svn" EXCLUDE + PATTERN "tmp" EXCLUDE + PATTERN "Templates" EXCLUDE + PATTERN "Debian*" EXCLUDE) + +#install the config file +install(FILES Utils/getopt.h DESTINATION include/OpenMesh/Tools/Utils) + +endif () + +target_include_directories(OpenMeshTools PUBLIC + $ + $) + +install(TARGETS OpenMeshTools EXPORT OpenMeshConfig + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + diff --git a/src/OpenMesh/Tools/Utils/Timer.cc b/src/OpenMesh/Tools/Utils/Timer.cc index 72ae0f0e8efce42c0b53c7fa74eefed71996a06b..28d8f5e1ddf9327b946a0c2addd103e13898a993 100644 --- a/src/OpenMesh/Tools/Utils/Timer.cc +++ b/src/OpenMesh/Tools/Utils/Timer.cc @@ -183,7 +183,7 @@ protected: }; // ----------------------------------------------------------- gettimeofday ---- -#elif (defined(__GNUC__) || (defined(__INTEL_COMPILER) && !defined(WIN32))) && !defined(__MINGW32__) +#elif (defined(__GNUC__) && !defined(__FreeBSD__) || (defined(__INTEL_COMPILER) && !defined(WIN32))) && !defined(__MINGW32__) # include # include @@ -271,7 +271,7 @@ Timer::Timer(void) : # else impl_ = new TimerImplPosix; # endif -#elif (defined(__GNUC__) || (defined(__INTEL_COMPILER) && !defined(WIN32)) ) && !defined(__MINGW32__) +#elif (defined(__GNUC__) && !defined(__FreeBSD__) || (defined(__INTEL_COMPILER) && !defined(WIN32)) ) && !defined(__MINGW32__) impl_ = new TimerImplGToD; #else impl_ = new TimerImplStd; diff --git a/src/OpenMesh/Tools/Utils/getopt.h b/src/OpenMesh/Tools/Utils/getopt.h index 59600d73da98d6a7f69e660ac8f9a99d978e12ea..d2d7f9184ce1947ffe6eb292b8a50b6b6708b11e 100644 --- a/src/OpenMesh/Tools/Utils/getopt.h +++ b/src/OpenMesh/Tools/Utils/getopt.h @@ -21,7 +21,7 @@ #endif -#elif defined __APPLE__ +#elif defined __APPLE__ || defined(__FreeBSD__) #include #else #include