https://bitbucket.org/rram/dvrlib/src/joss/
Raw File
Tip revision: ebdf47c6af306cf5e0df000aa55442e058c9c9f1 authored by Ramsharan Rangarajan on 15 October 2023, 10:52:09 UTC
minor changes.
Tip revision: ebdf47c
CMakeLists.txt

cmake_minimum_required(VERSION 3.12)

project("dvrlib" VERSION 1.0
  LANGUAGES CXX
  DESCRIPTION "A C++ library of directional vertex relaxation")

# Set runtime path (for Linux)
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}/lib")
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)

# build options
option(DVR_BUILD_TESTS "Run unit tests" ON)
option(DVR_BUILD_DOCS "Build documentation" OFF)

# Required packages
find_package(GSL REQUIRED)
find_package(Boost REQUIRED)
find_package(OpenMP)
if(DVR_BUILD_DOCS)
	find_package(Doxygen REQUIRED)
endif()

# check GSL
try_compile(GSL_SUCCESS
	"${CMAKE_BINARY_DIR}/dependency_tests/"
	"${CMAKE_SOURCE_DIR}/dependency_tests/test_gsl.cpp"
	CMAKE_FLAGS "-DINCLUDE_DIRECTORIES=${GSL_INCLUDE_DIRS}" "-DLINK_LIBRARIES=${GSL_LIBRARIES}"
	OUTPUT_VARIABLE TRY_GSL_SUCCESS)
if(NOT ${GSL_SUCCESS})
	       message(FATAL_ERROR "Problem using GSL. Could not compile dependency test ")
else()
		message(STATUS "GSL works")
endif()

# check OpenMP
if(OpenMP_FOUND)

	try_compile(OMP_SUCCESS
			"${CMAKE_BINARY_DIR}/dependency_tests/"
			"${CMAKE_SOURCE_DIR}/dependency_tests/test_openmp.cpp"
			CMAKE_FLAGS
						"-DINCLUDE_DIRECTORIES=${OpenMP_CXX_INCLUDE_DIRS}"
						"-DLINK_LIBRARIES=${OpenMP_CXX_LIBRARIES}"
			OUTPUT_VARIABLE TRY_OMP_SUCCESS)

	if(NOT ${OMP_SUCCESS})
	       message(FATAL_ERROR "Problem using OpenMP_CXX. Could not compile dependency test")
	else()
		message(STATUS "OpenMP_CXX works")
        endif()

endif()

# Compile features
list(APPEND DVR_COMPILE_FEATURES cxx_std_17)

# Compile code
add_subdirectory(src)
add_subdirectory(test)

# Testing
if(${DVR_BUILD_TESTS})  
	include(CTest)
	add_subdirectory(test/test)
	add_subdirectory(src/Poly/test)
	add_subdirectory(src/Quality/test)
	add_subdirectory(src/Maxmin/test)
	add_subdirectory(src/Optimizer/test)	
endif()

# install 
include (GNUInstallDirs)
include(CMakePackageConfigHelpers)

install(TARGETS
	dvr_traits
	dvr_meshwrapper
	dvr_vertcolor
  	dvr_poly
  	dvr_quality
  	dvr_maxmin
  	dvr_optimizer
  	dvr_test
  	EXPORT ${PROJECT_NAME}Targets
  	DESTINATION ${PROJECT_NAME}/${CMAKE_INSTALL_LIBDIR}
  	INCLUDES DESTINATION ${PROJECT_NAME}/${CMAKE_INSTALL_INCLUDEDIR})

install(EXPORT ${PROJECT_NAME}Targets
  	       DESTINATION ${PROJECT_NAME}/${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
  	       NAMESPACE dvrlib::
  	       FILE ${PROJECT_NAME}Targets.cmake)

set(DVR_INCLUDE_DIRS_VAR ${PROJECT_NAME}/${CMAKE_INSTALL_INCLUDEDIR})
set(DVR_LIBRARY_DIRS_VAR ${PROJECT_NAME}/${CMAKE_INSTALL_LIBDIR})

configure_package_config_file(
	"cmake/${PROJECT_NAME}Config.cmake.in" "${PROJECT_NAME}Config.cmake"
  	INSTALL_DESTINATION
  	${PROJECT_NAME}/${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
  	PATH_VARS DVR_INCLUDE_DIRS_VAR DVR_LIBRARY_DIRS_VAR)

write_basic_package_version_file(
	${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
  	VERSION ${PACKAGE_VERSION}
  	COMPATIBILITY AnyNewerVersion)

install(FILES
	"dvrlib"
  	DESTINATION ${PROJECT_NAME}/${CMAKE_INSTALL_INCLUDEDIR})

install(FILES
	"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
  	"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
  	DESTINATION "${PROJECT_NAME}/${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")

set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE.txt")

if(DVR_BUILD_DOCS)
	add_subdirectory(docs)
endif()
back to top