From d2c2aba6606e1fd901a029be05a649bc7f2108af Mon Sep 17 00:00:00 2001 From: Mike Dev Date: Thu, 18 Apr 2019 16:34:01 +0200 Subject: [PATCH 1/2] [CMake] Add minimal cmake support --- CMakeLists.txt | 36 ++++++++++++++++++++++++++++++++++++ test/CMakeLists.txt | 31 +++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 test/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..8d6f517 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,36 @@ +# Copyright 2019 Mike Dev +# Distributed under the Boost Software License, Version 1.0. +# See accompanying file LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt +# +# NOTE: CMake support for Boost.Ratio is currently experimental at best +# and the interface is likely to change in the future + +cmake_minimum_required( VERSION 3.5 ) +project( BoostRatio LANGUAGES CXX) +option( BOOST_RATIO_INCLUDE_TESTS "Add boost ratio tests" OFF ) + +add_library( boost_ratio INTERFACE ) +add_library( Boost::ratio ALIAS boost_ratio ) + +target_include_directories( boost_ratio INTERFACE include ) + +target_link_libraries( boost_ratio + INTERFACE + Boost::config + Boost::core + Boost::integer + Boost::mpl + Boost::static_assert + Boost::type_traits + +# NOTE: dependency on rational is only needed when +# BOOST_RATIO_EXTENSIONS is defined. +# Maybe consuming libraries that do so should add +# Boost::rational as a dependency themselves + Boost::rational +) + +if( BOOST_RATIO_INCLUDE_TESTS ) + enable_testing() + add_subdirectory( test ) +endif() diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt new file mode 100644 index 0000000..a57ef11 --- /dev/null +++ b/test/CMakeLists.txt @@ -0,0 +1,31 @@ +# Copyright 2019 Mike Dev +# Distributed under the Boost Software License, Version 1.0. +# See accompanying file LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt +# +# NOTE: CMake support for Boost.Ratio is currently experimental at best +# and this file runs only a subset of the unit tests +# (in particular none of the fail tests) + +# list of tests that contain a main function +set( exec_test_files ratio_ext_pass;ratio_io_pass;ratio_pass ) + +file( GLOB_RECURSE test_files *_pass.cpp ) +foreach( file IN LISTS test_files ) + + get_filename_component( core_name ${file} NAME_WE ) + set( test_name test_boost_ratio_${core_name} ) + + if( ${core_name} IN_LIST exec_test_files ) + add_executable( ${test_name} ${file} ) + add_test( NAME ${test_name} COMMAND ${test_name} ) + else() + # most tests are compile only, so we just need to create a object file + # in order to see, if it compiles + add_library( ${test_name} OBJECT ${file}) + endif() + + target_link_libraries( ${test_name} PUBLIC + Boost::ratio + ) + +endforeach() From 34c3075defae742b991bb2fd4fb2520cd68784b0 Mon Sep 17 00:00:00 2001 From: Mike Dev Date: Thu, 18 Apr 2019 17:17:19 +0200 Subject: [PATCH 2/2] [CMake] Fix comment --- CMakeLists.txt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8d6f517..386159a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,10 +23,11 @@ target_link_libraries( boost_ratio Boost::static_assert Boost::type_traits -# NOTE: dependency on rational is only needed when -# BOOST_RATIO_EXTENSIONS is defined. +# NOTE: As of Boost 1.70, the dependency on rational is only +# necessary, if BOOST_RATIO_EXTENSIONS is defined. # Maybe consuming libraries that do so should add -# Boost::rational as a dependency themselves +# Boost::rational as a dependency themselves, +# instead of doing it here for everyone? Boost::rational )