Browse Source

cmake: command-line option ‘-Wdeclaration-after-statement’ is valid for C/ObjC but not for C++

Anonymous Maarten 2 năm trước cách đây
mục cha
commit
837416ef85
1 tập tin đã thay đổi với 11 bổ sung2 xóa
  1. 11 2
      CMakeLists.txt

+ 11 - 2
CMakeLists.txt

@@ -551,15 +551,24 @@ if(USE_GCC OR USE_CLANG)
     target_compile_options(sdl-global-options INTERFACE "-fno-strict-aliasing")
   endif()
 
+  # command-line option ‘-Wdeclaration-after-statement’ is valid for C/ObjC but not for C++
   check_c_compiler_flag(-Wdeclaration-after-statement HAVE_GCC_WDECLARATION_AFTER_STATEMENT)
   if(HAVE_GCC_WDECLARATION_AFTER_STATEMENT)
     if(SDL_WERROR)
       check_c_compiler_flag(-Werror=declaration-after-statement HAVE_GCC_WERROR_DECLARATION_AFTER_STATEMENT)
       if(HAVE_GCC_WERROR_DECLARATION_AFTER_STATEMENT)
-        target_compile_options(sdl-global-options INTERFACE "-Werror=declaration-after-statement")
+        if(CMAKE_VERSION VERSION_LESS 3.3)
+          target_compile_options(sdl-global-options INTERFACE "-Werror=declaration-after-statement")
+        else()
+          target_compile_options(sdl-global-options INTERFACE "$<$<OR:$<COMPILE_LANGUAGE:C>,$<COMPILE_LANGUAGE:OBJCC>>:-Werror=declaration-after-statement>")
+        endif()
       endif()
     endif()
-    target_compile_options(sdl-global-options INTERFACE "-Wdeclaration-after-statement")
+    if(CMAKE_VERSION VERSION_LESS 3.3)
+      target_compile_options(sdl-global-options INTERFACE "-Wdeclaration-after-statement")
+    else()
+      target_compile_options(sdl-global-options INTERFACE "$<$<OR:$<COMPILE_LANGUAGE:C>,$<COMPILE_LANGUAGE:OBJC>>:-Wdeclaration-after-statement>")
+    endif()
   endif()
 
   check_c_compiler_flag(-Wdocumentation HAVE_GCC_WDOCUMENTATION)