diff --git a/CMakeLists.txt b/CMakeLists.txt index e3626289..00112c6f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,7 +20,7 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -cmake_minimum_required(VERSION 3.15) +cmake_minimum_required(VERSION 3.19) project(mp-units-dev LANGUAGES CXX) list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake") @@ -71,3 +71,43 @@ add_subdirectory(docs) # add unit tests enable_testing() add_subdirectory(test) + +function(get_target_linked_targets target targets_out) + get_target_property(linked_libs ${target} INTERFACE_LINK_LIBRARIES) + foreach(linked_lib ${linked_libs}) + if(NOT linked_lib IN_LIST targets) + if(TARGET ${linked_lib}) + get_target_linked_targets(${linked_lib} child_targets) + list(APPEND targets ${linked_lib} ${child_targets}) + endif() + endif() + endforeach() + + list(REMOVE_DUPLICATES targets) + list(REMOVE_DUPLICATES link_libs) + set(${targets_out} ${targets} PARENT_SCOPE) +endfunction() + +function(get_target_sources target paths_out) + get_target_linked_targets(${target} targets) + list(APPEND targets ${target}) + + foreach(t ${targets}) + get_target_property(sources ${t} SOURCES) + if(sources) + get_target_property(source_dir ${t} SOURCE_DIR) + foreach(f ${sources}) + file(REAL_PATH "${f}" path BASE_DIRECTORY "${source_dir}") + list(APPEND paths "${path}") + endforeach() + endif() + endforeach() + + set(${paths_out} ${paths} PARENT_SCOPE) +endfunction() + +# tests for standalone headers +include(TestHeaders) +get_target_sources(mp-units::mp-units sources) +add_header_test(test_headers HEADERS ${sources}) +target_link_libraries(test_headers PRIVATE mp-units::mp-units) diff --git a/cmake/TestHeaders.cmake b/cmake/TestHeaders.cmake new file mode 100644 index 00000000..663c9f4e --- /dev/null +++ b/cmake/TestHeaders.cmake @@ -0,0 +1,128 @@ +# Copyright Louis Dionne 2013-2017 +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) +# +# +# This CMake module provides a function generating a unit test to make sure +# that every public header can be included on its own. +# +# When a C++ library or application has many header files, it can happen that +# a header does not include all the other headers it depends on. When this is +# the case, it can happen that including that header file on its own will +# break the compilation. This CMake module generates a dummy executable +# comprised of many .cpp files, each of which includes a header file that +# is part of the public API. In other words, the executable is comprised +# of .cpp files of the form: +# +# #include +# +# and then exactly one `main` function. If this succeeds to compile, it means +# that the header can be included on its own, which is what clients expect. +# Otherwise, you have a problem. Since writing these dumb unit tests by hand +# is tedious and repetitive, you can use this CMake module to automate this +# task. + +# add_header_test( [EXCLUDE_FROM_ALL] [EXCLUDE excludes...] HEADERS headers...) +# +# Generates header-inclusion unit tests for all the specified headers. +# +# This function creates a target which builds a dummy executable including +# each specified header file individually. If this target builds successfully, +# it means that all the specified header files can be included individually. +# +# Parameters +# ---------- +# : +# The name of the target to generate. +# +# HEADERS headers: +# A list of header files to generate the inclusion tests for. All headers +# in this list must be represented as relative paths from the root of the +# include directory added to the compiler's header search path. In other +# words, it should be possible to include all headers in this list as +# +# #include <${header}> +# +# For example, for a library with the following structure: +# +# project/ +# doc/ +# test/ +# ... +# include/ +# boost/ +# hana.hpp +# hana/ +# transform.hpp +# tuple.hpp +# pair.hpp +# ... +# +# When building the unit tests for that library, we'll add `-I project/include' +# to the compiler's arguments. The list of public headers should therefore contain +# +# boost/hana.hpp +# boost/hana/transform.hpp +# boost/hana/tuple.hpp +# boost/hana/pair.hpp +# ... +# +# Usually, all the 'public' header files of a library should be tested for +# standalone inclusion. A header is considered 'public' if a client should +# be able to include that header on its own. +# +# [EXCLUDE excludes]: +# An optional list of headers or regexes for which no unit test should be +# generated. Basically, any header in the list specified by the `HEADERS` +# argument that matches anything in `EXCLUDE` will be skipped. +# +# [EXCLUDE_FROM_ALL]: +# If provided, the generated target is excluded from the 'all' target. +# +function(add_header_test target) + cmake_parse_arguments(ARGS "EXCLUDE_FROM_ALL" # options + "" # 1 value args + "HEADERS;EXCLUDE" # multivalued args + ${ARGN}) + if (NOT ARGS_HEADERS) + message(FATAL_ERROR "The `HEADERS` argument must be provided.") + endif() + + if (ARGS_EXCLUDE_FROM_ALL) + set(ARGS_EXCLUDE_FROM_ALL "EXCLUDE_FROM_ALL") + else() + set(ARGS_EXCLUDE_FROM_ALL "") + endif() + + foreach(header ${ARGS_HEADERS}) + set(skip FALSE) + foreach(exclude ${ARGS_EXCLUDE}) + if (${header} MATCHES ${exclude}) + set(skip TRUE) + break() + endif() + endforeach() + if (skip) + continue() + endif() + + get_filename_component(filename "${header}" NAME_WE) + get_filename_component(directory "${header}" DIRECTORY) + + set(source "${CMAKE_CURRENT_BINARY_DIR}/headers/${directory}/${filename}.cpp") + if (NOT EXISTS "${source}") + file(WRITE "${source}" "#include <${header}>") + endif() + list(APPEND sources "${source}") + endforeach() + + set(standalone_main "${CMAKE_CURRENT_BINARY_DIR}/headers/_standalone_main.cpp") + if (NOT EXISTS "${standalone_main}") + file(WRITE "${standalone_main}" "int main() { }") + endif() + add_executable(${target} + ${ARGS_EXCLUDE_FROM_ALL} + ${sources} + "${CMAKE_CURRENT_BINARY_DIR}/headers/_standalone_main.cpp" + ) +endfunction() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 4ed41451..32a5e555 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -20,7 +20,7 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -cmake_minimum_required(VERSION 3.15) +cmake_minimum_required(VERSION 3.19) project(mp-units VERSION 0.8.0 LANGUAGES CXX) set(projectPrefix UNITS_) diff --git a/src/cmake/AddUnitsModule.cmake b/src/cmake/AddUnitsModule.cmake index bac9a57d..2f92d92b 100644 --- a/src/cmake/AddUnitsModule.cmake +++ b/src/cmake/AddUnitsModule.cmake @@ -20,14 +20,48 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -cmake_minimum_required(VERSION 3.15) +cmake_minimum_required(VERSION 3.19) + +function(validate_unparsed module prefix) + if(${prefix}_UNPARSED_ARGUMENTS) + message(FATAL_ERROR "Invalid arguments '${${prefix}_UNPARSED_ARGUMENTS}' " + "for module '${module}'") + endif() +endfunction() + +function(validate_argument_exists module prefix arg) + if(NOT ${prefix}_${arg}) + message(FATAL_ERROR "'${arg}' not provided for module '${module}'") + endif() +endfunction() + +function(validate_arguments_exists module prefix) + foreach(arg ${ARGN}) + validate_argument_exists(${module} ${prefix} ${arg}) + endforeach() +endfunction() # -# add_units_module(ModuleName ...) +# add_units_module(ModuleName +# DEPENDENCIES ... +# HEADERS ...) # function(add_units_module name) - add_library(mp-units-${name} INTERFACE) - target_link_libraries(mp-units-${name} INTERFACE ${ARGN}) + # parse arguments + set(multiValues DEPENDENCIES HEADERS) + cmake_parse_arguments( + PARSE_ARGV 1 + ARG + "" "" "${multiValues}" + ) + + # validate and process arguments + validate_unparsed(${name} ARG) + validate_arguments_exists(${name} ARG DEPENDENCIES HEADERS) + + # define the target for a module + add_library(mp-units-${name} INTERFACE ${ARG_HEADERS}) + target_link_libraries(mp-units-${name} INTERFACE ${ARG_DEPENDENCIES}) target_include_directories( mp-units-${name} ${unitsAsSystem} INTERFACE $ $ diff --git a/src/core-fmt/CMakeLists.txt b/src/core-fmt/CMakeLists.txt index 1ee5e6f7..57212995 100644 --- a/src/core-fmt/CMakeLists.txt +++ b/src/core-fmt/CMakeLists.txt @@ -20,12 +20,17 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -cmake_minimum_required(VERSION 3.15) +cmake_minimum_required(VERSION 3.19) option(${projectPrefix}USE_LIBFMT "Enables usage of libfmt instead of the one from 'std'" ON) message(STATUS "${projectPrefix}USE_LIBFMT: ${${projectPrefix}USE_LIBFMT}") -add_units_module(core-fmt mp-units::core) +add_units_module(core-fmt + DEPENDENCIES + mp-units::core + HEADERS + include/units/format.h +) target_compile_definitions(mp-units-core-fmt INTERFACE ${projectPrefix}USE_LIBFMT=$) if(${projectPrefix}USE_LIBFMT) diff --git a/src/core-io/CMakeLists.txt b/src/core-io/CMakeLists.txt index dc34d127..6faab9ff 100644 --- a/src/core-io/CMakeLists.txt +++ b/src/core-io/CMakeLists.txt @@ -20,6 +20,11 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -cmake_minimum_required(VERSION 3.15) +cmake_minimum_required(VERSION 3.19) -add_units_module(core-io mp-units::core) +add_units_module(core-io + DEPENDENCIES + mp-units::core + HEADERS + include/units/quantity_io.h +) diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 4a4682be..cdc1eb36 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -20,7 +20,7 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -cmake_minimum_required(VERSION 3.15) +cmake_minimum_required(VERSION 3.19) # core library options set(${projectPrefix}DOWNCAST_MODE ON CACHE STRING "Select downcasting mode") @@ -34,7 +34,31 @@ include(CheckLibcxxInUse) check_libcxx_in_use(${projectPrefix}LIBCXX) # core library definition -add_library(mp-units-core INTERFACE) +add_library(mp-units-core INTERFACE + include/units/base_dimension.h + include/units/chrono.h + include/units/concepts.h + include/units/customization_points.h + include/units/derived_dimension.h + include/units/exponent.h + include/units/generic/angle.h + include/units/generic/dimensionless.h + include/units/kind.h + include/units/magnitude.h + include/units/math.h + include/units/point_origin.h + include/units/prefix.h + include/units/quantity.h + include/units/quantity_cast.h + include/units/quantity_kind.h + include/units/quantity_point.h + include/units/quantity_point_kind.h + include/units/random.h + include/units/ratio.h + include/units/reference.h + include/units/symbol_text.h + include/units/unit.h +) target_compile_features(mp-units-core INTERFACE cxx_std_20) target_link_libraries(mp-units-core INTERFACE gsl::gsl-lite) target_include_directories( diff --git a/src/systems/CMakeLists.txt b/src/systems/CMakeLists.txt index 41adc78e..06a3169d 100644 --- a/src/systems/CMakeLists.txt +++ b/src/systems/CMakeLists.txt @@ -20,7 +20,7 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -cmake_minimum_required(VERSION 3.15) +cmake_minimum_required(VERSION 3.19) # systems add_subdirectory(isq) diff --git a/src/systems/isq-iec80000/CMakeLists.txt b/src/systems/isq-iec80000/CMakeLists.txt index 9f37c6f6..84e8f8d7 100644 --- a/src/systems/isq-iec80000/CMakeLists.txt +++ b/src/systems/isq-iec80000/CMakeLists.txt @@ -20,6 +20,16 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -cmake_minimum_required(VERSION 3.15) +cmake_minimum_required(VERSION 3.19) -add_units_module(isq-iec80000 mp-units::si) +add_units_module(isq-iec80000 + DEPENDENCIES + mp-units::si + HEADERS + include/units/isq/iec80000/binary_prefixes.h + include/units/isq/iec80000/iec80000.h + include/units/isq/iec80000/modulation_rate.h + include/units/isq/iec80000/storage_capacity.h + include/units/isq/iec80000/traffic_intensity.h + include/units/isq/iec80000/transfer_rate.h +) diff --git a/src/systems/isq-natural/CMakeLists.txt b/src/systems/isq-natural/CMakeLists.txt index 7f9353b4..b88038ce 100644 --- a/src/systems/isq-natural/CMakeLists.txt +++ b/src/systems/isq-natural/CMakeLists.txt @@ -20,6 +20,21 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -cmake_minimum_required(VERSION 3.15) +cmake_minimum_required(VERSION 3.19) -add_units_module(isq-natural mp-units::isq) +add_units_module(isq-natural + DEPENDENCIES + mp-units::isq + HEADERS + include/units/isq/natural/acceleration.h + include/units/isq/natural/constants.h + include/units/isq/natural/energy.h + include/units/isq/natural/force.h + include/units/isq/natural/length.h + include/units/isq/natural/mass.h + include/units/isq/natural/momentum.h + include/units/isq/natural/natural.h + include/units/isq/natural/speed.h + include/units/isq/natural/time.h + include/units/isq/natural/units.h +) diff --git a/src/systems/isq/CMakeLists.txt b/src/systems/isq/CMakeLists.txt index 1c8e49b5..960a0114 100644 --- a/src/systems/isq/CMakeLists.txt +++ b/src/systems/isq/CMakeLists.txt @@ -20,6 +20,55 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -cmake_minimum_required(VERSION 3.15) +cmake_minimum_required(VERSION 3.19) -add_units_module(isq mp-units::core) +add_units_module(isq + DEPENDENCIES + mp-units::core + HEADERS + include/units/isq/dimensions/absorbed_dose.h + include/units/isq/dimensions/acceleration.h + include/units/isq/dimensions/amount_of_substance.h + include/units/isq/dimensions/angular_velocity.h + include/units/isq/dimensions/area.h + include/units/isq/dimensions/capacitance.h + include/units/isq/dimensions/catalytic_activity.h + include/units/isq/dimensions/charge_density.h + include/units/isq/dimensions/concentration.h + include/units/isq/dimensions/conductance.h + include/units/isq/dimensions/current_density.h + include/units/isq/dimensions/density.h + include/units/isq/dimensions/dynamic_viscosity.h + include/units/isq/dimensions/electric_charge.h + include/units/isq/dimensions/electric_current.h + include/units/isq/dimensions/electric_field_strength.h + include/units/isq/dimensions/energy.h + include/units/isq/dimensions/energy_density.h + include/units/isq/dimensions/force.h + include/units/isq/dimensions/frequency.h + include/units/isq/dimensions/heat_capacity.h + include/units/isq/dimensions/inductance.h + include/units/isq/dimensions/length.h + include/units/isq/dimensions/luminance.h + include/units/isq/dimensions/luminous_intensity.h + include/units/isq/dimensions/magnetic_flux.h + include/units/isq/dimensions/magnetic_induction.h + include/units/isq/dimensions/mass.h + include/units/isq/dimensions/molar_energy.h + include/units/isq/dimensions/momentum.h + include/units/isq/dimensions/permeability.h + include/units/isq/dimensions/permittivity.h + include/units/isq/dimensions/power.h + include/units/isq/dimensions/pressure.h + include/units/isq/dimensions/radioactivity.h + include/units/isq/dimensions/resistance.h + include/units/isq/dimensions/speed.h + include/units/isq/dimensions/surface_tension.h + include/units/isq/dimensions/thermal_conductivity.h + include/units/isq/dimensions/thermodynamic_temperature.h + include/units/isq/dimensions/time.h + include/units/isq/dimensions/torque.h + include/units/isq/dimensions/voltage.h + include/units/isq/dimensions/volume.h + include/units/isq/dimensions.h +) diff --git a/src/systems/si-cgs/CMakeLists.txt b/src/systems/si-cgs/CMakeLists.txt index 10b16ae9..5a1cb20a 100644 --- a/src/systems/si-cgs/CMakeLists.txt +++ b/src/systems/si-cgs/CMakeLists.txt @@ -20,6 +20,21 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -cmake_minimum_required(VERSION 3.15) +cmake_minimum_required(VERSION 3.19) -add_units_module(si-cgs mp-units::si) +add_units_module(si-cgs + DEPENDENCIES + mp-units::si + HEADERS + include/units/isq/si/cgs/acceleration.h + include/units/isq/si/cgs/area.h + include/units/isq/si/cgs/cgs.h + include/units/isq/si/cgs/energy.h + include/units/isq/si/cgs/force.h + include/units/isq/si/cgs/length.h + include/units/isq/si/cgs/mass.h + include/units/isq/si/cgs/power.h + include/units/isq/si/cgs/pressure.h + include/units/isq/si/cgs/speed.h + include/units/isq/si/cgs/time.h +) diff --git a/src/systems/si-fps/CMakeLists.txt b/src/systems/si-fps/CMakeLists.txt index c311fb5e..12f9bd9e 100644 --- a/src/systems/si-fps/CMakeLists.txt +++ b/src/systems/si-fps/CMakeLists.txt @@ -20,6 +20,24 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -cmake_minimum_required(VERSION 3.15) +cmake_minimum_required(VERSION 3.19) + +add_units_module(si-fps + DEPENDENCIES + mp-units::si + HEADERS + include/units/isq/si/fps/acceleration.h + include/units/isq/si/fps/area.h + include/units/isq/si/fps/density.h + include/units/isq/si/fps/energy.h + include/units/isq/si/fps/force.h + include/units/isq/si/fps/fps.h + include/units/isq/si/fps/length.h + include/units/isq/si/fps/mass.h + include/units/isq/si/fps/power.h + include/units/isq/si/fps/pressure.h + include/units/isq/si/fps/speed.h + include/units/isq/si/fps/time.h + include/units/isq/si/fps/volume.h +) -add_units_module(si-fps mp-units::si) diff --git a/src/systems/si-hep/CMakeLists.txt b/src/systems/si-hep/CMakeLists.txt index 0403a82b..66747172 100644 --- a/src/systems/si-hep/CMakeLists.txt +++ b/src/systems/si-hep/CMakeLists.txt @@ -20,6 +20,15 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -cmake_minimum_required(VERSION 3.15) +cmake_minimum_required(VERSION 3.19) -add_units_module(si-hep mp-units::si) +add_units_module(si-hep + DEPENDENCIES + mp-units::si + HEADERS + include/units/isq/si/hep/area.h + include/units/isq/si/hep/energy.h + include/units/isq/si/hep/hep.h + include/units/isq/si/hep/mass.h + include/units/isq/si/hep/momentum.h +) diff --git a/src/systems/si-iau/CMakeLists.txt b/src/systems/si-iau/CMakeLists.txt index ce9984a8..2677a344 100644 --- a/src/systems/si-iau/CMakeLists.txt +++ b/src/systems/si-iau/CMakeLists.txt @@ -20,6 +20,12 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -cmake_minimum_required(VERSION 3.15) +cmake_minimum_required(VERSION 3.19) -add_units_module(si-iau mp-units::si) +add_units_module(si-iau + DEPENDENCIES + mp-units::si + HEADERS + include/units/isq/si/iau/iau.h + include/units/isq/si/iau/length.h +) diff --git a/src/systems/si-imperial/CMakeLists.txt b/src/systems/si-imperial/CMakeLists.txt index f99f274b..ac903b82 100644 --- a/src/systems/si-imperial/CMakeLists.txt +++ b/src/systems/si-imperial/CMakeLists.txt @@ -20,6 +20,12 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -cmake_minimum_required(VERSION 3.15) +cmake_minimum_required(VERSION 3.19) -add_units_module(si-imperial mp-units::si) +add_units_module(si-imperial + DEPENDENCIES + mp-units::si + HEADERS + include/units/isq/si/imperial/imperial.h + include/units/isq/si/imperial/length.h +) diff --git a/src/systems/si-international/CMakeLists.txt b/src/systems/si-international/CMakeLists.txt index e8b2716a..b62cd360 100644 --- a/src/systems/si-international/CMakeLists.txt +++ b/src/systems/si-international/CMakeLists.txt @@ -20,6 +20,16 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -cmake_minimum_required(VERSION 3.15) +cmake_minimum_required(VERSION 3.19) + +add_units_module(si-international + DEPENDENCIES + mp-units::si + HEADERS + include/units/isq/si/international/area.h + include/units/isq/si/international/international.h + include/units/isq/si/international/length.h + include/units/isq/si/international/speed.h + include/units/isq/si/international/volume.h +) -add_units_module(si-international mp-units::si) diff --git a/src/systems/si-typographic/CMakeLists.txt b/src/systems/si-typographic/CMakeLists.txt index 10d0e4d7..e8d17a84 100644 --- a/src/systems/si-typographic/CMakeLists.txt +++ b/src/systems/si-typographic/CMakeLists.txt @@ -20,6 +20,13 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -cmake_minimum_required(VERSION 3.15) +cmake_minimum_required(VERSION 3.19) + +add_units_module(si-typographic + DEPENDENCIES + mp-units::si + HEADERS + include/units/isq/si/typographic/length.h + include/units/isq/si/typographic/typographic.h +) -add_units_module(si-typographic mp-units::si) diff --git a/src/systems/si-uscs/CMakeLists.txt b/src/systems/si-uscs/CMakeLists.txt index d5abf74c..4bce00eb 100644 --- a/src/systems/si-uscs/CMakeLists.txt +++ b/src/systems/si-uscs/CMakeLists.txt @@ -20,6 +20,13 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -cmake_minimum_required(VERSION 3.15) +cmake_minimum_required(VERSION 3.19) + +add_units_module(si-uscs + DEPENDENCIES + mp-units::si + HEADERS + include/units/isq/si/uscs/length.h + include/units/isq/si/uscs/uscs.h +) -add_units_module(si-uscs mp-units::si) diff --git a/src/systems/si/CMakeLists.txt b/src/systems/si/CMakeLists.txt index bb5098b5..5fd34835 100644 --- a/src/systems/si/CMakeLists.txt +++ b/src/systems/si/CMakeLists.txt @@ -20,6 +20,57 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -cmake_minimum_required(VERSION 3.15) +cmake_minimum_required(VERSION 3.19) -add_units_module(si mp-units::isq) +add_units_module(si + DEPENDENCIES + mp-units::isq + HEADERS + include/units/isq/si/absorbed_dose.h + include/units/isq/si/acceleration.h + include/units/isq/si/amount_of_substance.h + include/units/isq/si/angular_velocity.h + include/units/isq/si/area.h + include/units/isq/si/capacitance.h + include/units/isq/si/catalytic_activity.h + include/units/isq/si/charge_density.h + include/units/isq/si/concentration.h + include/units/isq/si/conductance.h + include/units/isq/si/constants.h + include/units/isq/si/current_density.h + include/units/isq/si/density.h + include/units/isq/si/dynamic_viscosity.h + include/units/isq/si/electric_charge.h + include/units/isq/si/electric_current.h + include/units/isq/si/electric_field_strength.h + include/units/isq/si/energy.h + include/units/isq/si/energy_density.h + include/units/isq/si/force.h + include/units/isq/si/frequency.h + include/units/isq/si/heat_capacity.h + include/units/isq/si/inductance.h + include/units/isq/si/length.h + include/units/isq/si/luminance.h + include/units/isq/si/luminous_intensity.h + include/units/isq/si/magnetic_flux.h + include/units/isq/si/magnetic_induction.h + include/units/isq/si/mass.h + include/units/isq/si/molar_energy.h + include/units/isq/si/momentum.h + include/units/isq/si/permeability.h + include/units/isq/si/permittivity.h + include/units/isq/si/power.h + include/units/isq/si/prefixes.h + include/units/isq/si/pressure.h + include/units/isq/si/radioactivity.h + include/units/isq/si/resistance.h + include/units/isq/si/si.h + include/units/isq/si/speed.h + include/units/isq/si/surface_tension.h + include/units/isq/si/thermal_conductivity.h + include/units/isq/si/thermodynamic_temperature.h + include/units/isq/si/time.h + include/units/isq/si/torque.h + include/units/isq/si/voltage.h + include/units/isq/si/volume.h +)