浏览代码

Save the relevant options used to create a package, allow users to reject packages based on them.

Walter Gray 9 年之前
父节点
当前提交
78b3498bf4
共有 2 个文件被更改,包括 20 次插入11 次删除
  1. 1 2
      cmake/examples.cmake
  2. 19 9
      cmake/protobuf-config-version.cmake.in

+ 1 - 2
cmake/examples.cmake

@@ -18,8 +18,7 @@ function(add_examples_build NAME)
     STAMP_DIR ${NAME}/logs
     STAMP_DIR ${NAME}/logs
     INSTALL_COMMAND "" #Skip
     INSTALL_COMMAND "" #Skip
     LOG_CONFIGURE 1
     LOG_CONFIGURE 1
-    CMAKE_CACHE_ARGS "-Dprotobuf_MSVC_STATIC_RUNTIME:BOOL=${protobuf_MSVC_STATIC_RUNTIME}"
-                     "-DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}"
+    CMAKE_CACHE_ARGS "-DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}"
                      "-Dprotobuf_VERBOSE:BOOL=${protobuf_VERBOSE}"
                      "-Dprotobuf_VERBOSE:BOOL=${protobuf_VERBOSE}"
                      ${ARGN}
                      ${ARGN}
   )
   )

+ 19 - 9
cmake/protobuf-config-version.cmake.in

@@ -27,16 +27,26 @@ else()
   endif()
   endif()
 endif()
 endif()
 
 
-# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it:
-if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "@CMAKE_SIZEOF_VOID_P@" STREQUAL "")
-   return()
-endif()
+# Check and save build options used to create this package
+macro(_check_and_save_build_option OPTION VALUE)
+  if(DEFINED ${PACKAGE_FIND_NAME}_${OPTION} AND
+    NOT ${PACKAGE_FIND_NAME}_${OPTION} EQUAL VALUE)
+    set(PACKAGE_VERSION_UNSUITABLE TRUE)
+  endif()
+  set(${PACKAGE_FIND_NAME}_${OPTION} ${VALUE})
+endmacro()
+_check_and_save_build_option(WITH_ZLIB @protobuf_WITH_ZLIB@)
+_check_and_save_build_option(MSVC_STATIC_RUNTIME @protobuf_MSVC_STATIC_RUNTIME@)
+_check_and_save_build_option(BUILD_SHARED_LIBS @protobuf_BUILD_SHARED_LIBS@)
 
 
-# check that the installed version has the same 32/64bit-ness as the one which is currently searching:
-if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "@CMAKE_SIZEOF_VOID_P@")
-  math(EXPR installedBits "@CMAKE_SIZEOF_VOID_P@ * 8")
-  set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)")
-  set(PACKAGE_VERSION_UNSUITABLE TRUE)
+# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it:
+if(NOT "${CMAKE_SIZEOF_VOID_P}" STREQUAL "" AND NOT "@CMAKE_SIZEOF_VOID_P@" STREQUAL "")
+  # check that the installed version has the same 32/64bit-ness as the one which is currently searching:
+  if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "@CMAKE_SIZEOF_VOID_P@")
+    math(EXPR installedBits "@CMAKE_SIZEOF_VOID_P@ * 8")
+    set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)")
+    set(PACKAGE_VERSION_UNSUITABLE TRUE)
+  endif()
 endif()
 endif()
 
 
 set(${PACKAGE_FIND_NAME}_VERSION_PRERELEASE "@protobuf_VERSION_PRERELEASE@" PARENT_SCOPE)
 set(${PACKAGE_FIND_NAME}_VERSION_PRERELEASE "@protobuf_VERSION_PRERELEASE@" PARENT_SCOPE)