diff --git a/CMakeLists.txt b/CMakeLists.txt
index c8c8a434f809847a0ca393f0c2836773c818eecc..0a27e9db8d3d4f6670385484e211d7c0b4b470ea 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -90,6 +90,7 @@ set(EXTRA_DIST
 )
 
 include(GNUInstallDirs)
+include(XercesWarnings)
 include(XercesIncludes)
 include(XercesFunctions)
 include(XercesDLL)
diff --git a/cmake/XercesWarnings.cmake b/cmake/XercesWarnings.cmake
index 91f9dfd7f51901d35e2a4771bfc627a219199bd4..f91be0faf1030a03fa93fb90991d21f7166a8303 100644
--- a/cmake/XercesWarnings.cmake
+++ b/cmake/XercesWarnings.cmake
@@ -35,12 +35,22 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR
    CMAKE_CXX_COMPILER_ID MATCHES "Clang")
   set(test_flags
       -Wall
-      -Winline
-      -W
-      -Wformat-security
-      -Wpointer-arith
-      -Wdisabled-optimization
-      -Wno-unknown-pragmas
+      -Wcast-align
+      -Wcast-qual
+      -Wctor-dtor-privacy
+      -Wextra
+      -Wformat=2
+      -Wimplicit-atomic-properties
+      -Wmissing-declarations
+      -Wno-long-long
+      -Woverlength-strings
+      -Woverloaded-virtual
+      -Wredundant-decls
+      -Wreorder
+      -Wswitch-default
+      -Wunused-variable
+      -Wwrite-strings
+      -Wno-variadic-macros
       -fstrict-aliasing)
   if(extra-warnings)
     list(APPEND test_flags