Skip to content

Commit 104f9fe

Browse files
committed
[tests] Fix compilation issue if parent project use C++ 17
The library require at least a C++ 17 compiler. Sadly, designated initializers in C++ were introduced only in C++20 (in C, that was in C99 !). Designated initializers are useful in unit-tests and requiring the library to be build by a C++ 20 compiler at least, would be too much. So, keep the minimal standard to C++ 17 but compile unit-tests with C++ 20 minimum.
1 parent e0d748d commit 104f9fe

1 file changed

Lines changed: 7 additions & 0 deletions

File tree

‎tests/CMakeLists.txt‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,13 @@ set(FILES_SOURCES
7373
set(PROJECT_FILES ${FILES_HEADERS} ${FILES_SOURCES})
7474
add_executable(${PROJECT_NAME} ${PROJECT_FILES})
7575

76+
# Manage issues due to designated initializers not available before C++ 20 (only used in tests)
77+
if(${CMAKE_CXX_STANDARD} LESS 20)
78+
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 20)
79+
endif()
80+
get_property(PRJ_TEST_CXX_STD TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD)
81+
message(STATUS "Project \"${PROJECT_NAME}\" compiled with C++ standard ${PRJ_TEST_CXX_STD}")
82+
7683
# Link needed libraries
7784
target_link_directories(${PROJECT_NAME} PUBLIC ${PROJECT_LINKING_DIR})
7885
target_link_libraries(${PROJECT_NAME} LINK_PUBLIC ${PROJECT_LINKING_LIB})

0 commit comments

Comments
 (0)