diff --git a/CMakeLists.txt b/CMakeLists.txt index 7537a39..fc08564 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,30 +26,27 @@ # either expressed or implied, of the FreeBSD Project. # Version minimum -cmake_minimum_required(VERSION 3.0.2) - -include(cmake/base.cmake) -include(cmake/eigen.cmake) -include(cmake/msvc-specific.cmake) +cmake_minimum_required(VERSION 3.1.3) set(PROJECT_NAME diFi++) set(PROJECT_DESCRIPTION "Filter using rational transfer function") -set(PROJECT_URL "...") +set(PROJECT_URL "https://github.com/vsamy/DiFipp") SET(PROJECT_DEBUG_POSTFIX "_d") -#SET(CXX_DISABLE_WERROR True) set(DOXYGEN_USE_MATHJAX "NO") - -project(${PROJECT_NAME} CXX) set(CMAKE_CXX_STANDARD 14) -setup_project() - -option(DISABLE_TESTS "Disable unit tests." OFF) +option(BUILD_TESTING "Disable unit tests." ON) +option(BUILD_TEST_STATIC_BOOST "Build unit tests with static boost libraries" OFF) option(THROW_ON_CONTRACT_VIOLATION "Throw an error when program fails." ON) option(TERMINATE_ON_CONTRACT_VIOLATION "Terminate program when an error occurs. (Default)" OFF) option(UNENFORCED_ON_CONTRACT_VIOLATION "Do not perform any check." OFF) +include(cmake/base.cmake) +include(cmake/msvc-specific.cmake) + +project(${PROJECT_NAME} CXX) + # Handle contracts specifications if(${THROW_ON_CONTRACT_VIOLATION}) add_compile_options(-DGSL_THROW_ON_CONTRACT_VIOLATION) @@ -61,19 +58,18 @@ endif() # for MSVC if(MSVC) - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /W1 /MP") set(CMAKE_MSVCIDE_RUN_PATH "\$(SolutionDir)/src/\$(Configuration)") endif() # Eigen set(Eigen_REQUIRED "eigen3 >= 3.3") -search_for_eigen() +add_project_dependency(Eigen3 REQUIRED) add_subdirectory(include) -if(NOT ${DISABLE_TESTS}) +if(${BUILD_TESTING}) add_subdirectory(tests) endif() -pkg_config_append_libs(${PROJECT_NAME}) -setup_project_finalize() \ No newline at end of file +setup_project_finalize() +setup_project_package_finalize() diff --git a/cmake b/cmake index 6ccc9f9..192812c 160000 --- a/cmake +++ b/cmake @@ -1 +1 @@ -Subproject commit 6ccc9f9b2a2ff510ae7754c515c72f8e38410447 +Subproject commit 192812cc2c5d8aaffbc8536d0b0a2a7c11dad53b diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt index c703432..2fb6115 100644 --- a/include/CMakeLists.txt +++ b/include/CMakeLists.txt @@ -42,8 +42,10 @@ set(HEADERS set(GSL_HEADERS gsl/gsl_assert.h) add_library(${PROJECT_NAME} INTERFACE) -target_include_directories(${PROJECT_NAME} INTERFACE ${HEADERS} ${GSL_HEADERS}) +target_include_directories(${PROJECT_NAME} INTERFACE $ $) +target_include_directories(${PROJECT_NAME} SYSTEM INTERFACE "${EIGEN3_INCLUDE_DIR}") install(TARGETS ${PROJECT_NAME} + EXPORT "${TARGETS_EXPORT_NAME}" RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index cb32dc8..1750eac 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -25,26 +25,28 @@ # of the authors and should not be interpreted as representing official policies, # either expressed or implied, of the FreeBSD Project. -include(${CMAKE_SOURCE_DIR}/cmake/boost.cmake) - enable_testing() -set(BOOST_COMPONENTS unit_test_framework) -search_for_boost() - -add_definitions(-DBOOST_TEST_DYN_LINK) -include_directories(${Boost_INCLUDE_DIRS}) -include_directories(${CMAKE_SOURCE_DIR}/include) -link_directories(${Boost_LIBRARY_DIR} ${Boost_LIBRARY_DIRS}) +if(${BUILD_TEST_STATIC_BOOST}) + set(Boost_USE_STATIC_LIBS ON) + set(BUILD_SHARED_LIBS OFF) + set(BOOST_DEFS "") + set(BUILD_TYPE STATIC) +else() + set(Boost_USE_STATIC_LIBS OFF) + set(BUILD_SHARED_LIBS ON) + set(BOOST_DEFS Boost::dynamic_linking) + set(BUILD_TYPE SHARED) +endif() +find_package(Boost REQUIRED COMPONENTS unit_test_framework) macro(addTest testName) add_executable(${testName} ${testName}.cpp) - if(NOT MSVC) - target_link_libraries(${testName} PUBLIC ${Boost_LIBRARIES}) - endif() - add_test(${testName}Unit ${testName}) + target_link_libraries(${testName} PRIVATE ${PROJECT_NAME} Boost::unit_test_framework) # Adding a project configuration file (for MSVC only) - GENERATE_MSVC_DOT_USER_FILE(${testName}) + generate_msvc_dot_user_file(${testName}) + + add_test(${testName}Unit ${testName}) endmacro(addTest) addTest(GenericFilterTests)