Skip to content

Commit

Permalink
CPP template cmake update to support c++ standard 23 and 20 with prio…
Browse files Browse the repository at this point in the history
…rities
  • Loading branch information
alfiTH committed Oct 21, 2024
1 parent 6311dd0 commit a318995
Showing 1 changed file with 20 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,19 @@
cmake_minimum_required(VERSION 3.10)

#Select the compiler standard
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 11)
message(FATAL_ERROR "Version of g++ is lower than 11, g++ 11 or higher is required.")
elseif(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 12)
message(STATUS "Using g++ 11, setting C++20 standard.")
set(CXX_STANDARD 20)
elseif(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 13)
message(STATUS "Using g++ 12, setting C++23 standard.")
set(CXX_STANDARD 23)
else()
message(STATUS "Using g++ 13 or higher, setting the C++23 standard.")
set(CXX_STANDARD 23)
endif()


IF ( "$$ENV{ROBOCOMP}" STREQUAL "")
MESSAGE(WARNING "ROBOCOMP variable not set. Using the default value: /home/robocomp/robocomp")
Expand Down Expand Up @@ -46,8 +60,12 @@ add_definitions(-fmax-errors=1 -fno-char8_t)
# Specify construction and link process
ADD_EXECUTABLE( ${component_name} $${SOURCES} $${MOC_SOURCES} $${RC_SOURCES} $${UI_HEADERS} )
TARGET_LINK_LIBRARIES( ${component_name} $${LIBS} $${STATIC_LIBS} $${SPECIFIC_LIBS} $${QT_LIBRARIES} $${Ice_LIBRARIES} )
SET_TARGET_PROPERTIES(${component_name}
SET_TARGET_PROPERTIES(test
PROPERTIES
CXX_STANDARD 20
CXX_STANDARD $${CXX_STANDARD}
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS OFF
)


INSTALL(FILES $${EXECUTABLE_OUTPUT_PATH}/${component_name} DESTINATION $${RC_COMPONENT_INSTALL_PATH}/bin/ PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE )

0 comments on commit a318995

Please sign in to comment.