Skip to content

CXX Standard #174

Description

@kheaactua

Without altering the C++ Standard in the CMake file, I kept running into errors like:

duma/src/dumapp.cpp:198:18: error: declaration of 'void* operator new(size_t, const std::nothrow_t&) throw ()' has a different exception specifier                                                                 
 void *DUMA_CDECL operator new(DUMA_SIZE_T size,                                                                                                                                                                                              
                  ^~~~~~~~                                                                                                                                                                                                                    
In file included from local/duma/src/dumapp.cpp:38:                                                                                                                                                                      
/duma/dumapp.h:94:18: note: from previous declaration 'void* operator new(size_t, const std::nothrow_t&)'                                                                                                           
 void *DUMA_CDECL operator new(DUMA_SIZE_T, const std::nothrow_t &) throw(); 

In addition, to build on QNX, I also had to tweak how threads were linked against:

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 18d9eec..f3b4499 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -3,8 +3,10 @@ project(DUMA C CXX)
 
 # See README.md for help building and using DUMA
 
-set(CMAKE_CXX_STANDARD 98)
-set(CMAKE_CXX_STANDARD_REQUIRED off)
+find_package(Threads)
+
+set(CMAKE_CXX_STANDARD 11)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 if(POLICY CMP0063)
   cmake_policy(SET CMP0063 NEW)
@@ -190,7 +192,7 @@ endif()
 if (NOT DUMA_WITH_THREAD_SAFETY)
   target_compile_definitions(DUMA_STATIC PRIVATE DUMA_NO_THREAD_SAFETY)
 else()
-  target_link_libraries(DUMA_STATIC PUBLIC pthread)
+  target_link_libraries(DUMA_STATIC PUBLIC $<$<NOT:$<PLATFORM_ID:QNX>>:Threads::Threads>)
 endif()
 if (NOT DUMA_WITH_STRERROR)
   target_compile_definitions(DUMA_STATIC PRIVATE DUMA_NO_STRERROR)
@@ -236,7 +238,7 @@ if (WIN32 AND MINGW)
   message(STATUS "MINGW")
 else()
   message(STATUS "target link pthread to DUMA_SHARED")
-  target_link_libraries( DUMA_SHARED PUBLIC pthread )
+  target_link_libraries( DUMA_SHARED PUBLIC $<$<NOT:$<PLATFORM_ID:QNX>>:Threads::Threads> )
 endif()

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions