fix: GFLAGS_* variables take precedence in gflags_define
diff --git a/cmake/utils.cmake b/cmake/utils.cmake
index d039e5c..0b8333a 100644
--- a/cmake/utils.cmake
+++ b/cmake/utils.cmake
@@ -65,16 +65,18 @@
     message (FATAL_ERROR "gflags_variable: Too many macro arguments")
   endif ()
   if (NOT DEFINED GFLAGS_${varname})
-    if (GFLAGS_IS_SUBPROJECT AND "${ARGC}" EQUAL 5)
-      set (GFLAGS_${varname} "${ARGV4}")
+    if (DEFINED ${varname})
+      set(GFLAGS_${varname} "${${varname}}")
     else ()
-      set (GFLAGS_${varname} "${default}")
+      if (GFLAGS_IS_SUBPROJECT AND "${ARGC}" EQUAL 5)
+        set (GFLAGS_${varname} "${ARGV4}")
+      else ()
+        set (GFLAGS_${varname} "${default}")
+      endif ()
     endif ()
   endif ()
   if (GFLAGS_IS_SUBPROJECT)
-    if (NOT DEFINED ${varname})
-      set (${varname} "${GFLAGS_${varname}}")
-    endif ()
+    set (${varname} "${GFLAGS_${varname}}")
   else ()
     set (${varname} "${GFLAGS_${varname}}" CACHE ${type} "${docstring}")
   endif ()