Skip to content

Commit 2ec0023

Browse files
authored
Set CXX standard to 17 (#635)
The codecvt library is marked as deprecated in MSVC, but has no replacement in the standard. According to the deprecation notice, the library will not be removed until a suitable replacement has been standardized. In order to avoid pulling in additional third party libraries, the deprecation warning is disabled until the time comes that a replacement can be made (probably C++23) Signed-off-by: Øystein Sture <[email protected]>
1 parent e76ed13 commit 2ec0023

File tree

6 files changed

+16
-11
lines changed

6 files changed

+16
-11
lines changed

rosidl_generator_cpp/CMakeLists.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@ if(BUILD_TESTING)
3434
SKIP_INSTALL
3535
)
3636

37-
# Default to C++14
37+
# Default to C++17
3838
if(NOT CMAKE_CXX_STANDARD)
39-
set(CMAKE_CXX_STANDARD 14)
39+
set(CMAKE_CXX_STANDARD 17)
4040
endif()
4141

4242
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")

rosidl_runtime_c/CMakeLists.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,9 @@ if(BUILD_TESTING)
5959

6060
# For gtest
6161
enable_language(CXX)
62-
# Default to C++14
62+
# Default to C++17
6363
if(NOT CMAKE_CXX_STANDARD)
64-
set(CMAKE_CXX_STANDARD 14)
64+
set(CMAKE_CXX_STANDARD 17)
6565
endif()
6666

6767
find_package(ament_cmake_gtest REQUIRED)

rosidl_runtime_cpp/CMakeLists.txt

+7-2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@ target_include_directories(${PROJECT_NAME} INTERFACE
99
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
1010
"$<INSTALL_INTERFACE:include>")
1111

12+
if(MSVC)
13+
target_compile_definitions(${PROJECT_NAME} INTERFACE
14+
_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING)
15+
endif()
16+
1217
ament_export_include_directories(include)
1318
ament_export_targets(${PROJECT_NAME})
1419

@@ -25,9 +30,9 @@ if(BUILD_TESTING)
2530

2631
find_package(ament_cmake_gtest REQUIRED)
2732

28-
# Default to C++14
33+
# Default to C++17
2934
if(NOT CMAKE_CXX_STANDARD)
30-
set(CMAKE_CXX_STANDARD 14)
35+
set(CMAKE_CXX_STANDARD 17)
3136
endif()
3237

3338
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")

rosidl_typesupport_interface/CMakeLists.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ if(BUILD_TESTING)
2121
if(NOT CMAKE_C_STANDARD)
2222
set(CMAKE_C_STANDARD 11)
2323
endif()
24-
# Default to C++14
24+
# Default to C++17
2525
if(NOT CMAKE_CXX_STANDARD)
26-
set(CMAKE_CXX_STANDARD 14)
26+
set(CMAKE_CXX_STANDARD 17)
2727
endif()
2828

2929
find_package(ament_cmake_gtest REQUIRED)

rosidl_typesupport_introspection_cpp/CMakeLists.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ cmake_minimum_required(VERSION 3.12)
22

33
project(rosidl_typesupport_introspection_cpp)
44

5-
# Default to C++14
5+
# Default to C++17
66
if(NOT CMAKE_CXX_STANDARD)
7-
set(CMAKE_CXX_STANDARD 14)
7+
set(CMAKE_CXX_STANDARD 17)
88
endif()
99

1010
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")

rosidl_typesupport_introspection_cpp/cmake/rosidl_typesupport_introspection_cpp_generate_interfaces.cmake

+1-1
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ if(WIN32)
9898
endif()
9999
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
100100
set_target_properties(${rosidl_generate_interfaces_TARGET}${_target_suffix} PROPERTIES
101-
CXX_STANDARD 14
101+
CXX_STANDARD 17
102102
COMPILE_OPTIONS -Wall -Wextra -Wpedantic
103103
)
104104
endif()

0 commit comments

Comments
 (0)