diff --git a/CMakeLists.txt b/CMakeLists.txt index f7659fd..b80a5dc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,6 +18,8 @@ add_library(robin_map INTERFACE) # Use tsl::robin_map as target, more consistent with other libraries conventions (Boost, Qt, ...) add_library(tsl::robin_map ALIAS robin_map) +target_compile_features(robin_map INTERFACE cxx_std_17) + target_include_directories(robin_map INTERFACE "$" "$") diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index c573f2e..bf28f76 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -24,3 +24,11 @@ target_link_libraries(tsl_robin_map_tests PRIVATE Boost::unit_test_framework) # tsl::robin_map add_subdirectory(../ ${CMAKE_CURRENT_BINARY_DIR}/tsl) target_link_libraries(tsl_robin_map_tests PRIVATE tsl::robin_map) + +# The public target must raise a consumer's lower requested language standard. +add_executable(tsl_robin_map_cmake_test "cmake_target_test.cpp") +set_target_properties(tsl_robin_map_cmake_test PROPERTIES + CXX_STANDARD 14 + CXX_STANDARD_REQUIRED ON + CXX_EXTENSIONS OFF) +target_link_libraries(tsl_robin_map_cmake_test PRIVATE tsl::robin_map) diff --git a/tests/cmake_target_test.cpp b/tests/cmake_target_test.cpp new file mode 100644 index 0000000..5d33085 --- /dev/null +++ b/tests/cmake_target_test.cpp @@ -0,0 +1,11 @@ +#include +#include + +int main() { + tsl::robin_map values; + values[7] = 42; + tsl::robin_set keys; + keys.insert(7); + + return values.at(7) == 42 && keys.count(7) == 1 ? 0 : 1; +}