ソースを参照

Check for availability of unique_ptr and make_unique when building CMake

Some code paths may find these useful if available.
Brad King 9 年 前
コミット
aa50cdac43

+ 5 - 0
Source/Checks/cm_cxx_features.cmake

@@ -32,8 +32,13 @@ function(cm_check_cxx_feature name)
 endfunction()
 
 if(CMAKE_CXX_STANDARD)
+  cm_check_cxx_feature(make_unique)
+  if(CMake_HAVE_CXX_MAKE_UNIQUE)
+    set(CMake_HAVE_CXX_UNIQUE_PTR 1)
+  endif()
   cm_check_cxx_feature(nullptr)
   cm_check_cxx_feature(override)
+  cm_check_cxx_feature(unique_ptr)
   cm_check_cxx_feature(unordered_map)
   cm_check_cxx_feature(unordered_set)
 endif()

+ 6 - 0
Source/Checks/cm_cxx_make_unique.cxx

@@ -0,0 +1,6 @@
+#include <memory>
+int main()
+{
+  std::unique_ptr<int> u = std::make_unique<int>(0);
+  return *u;
+}

+ 6 - 0
Source/Checks/cm_cxx_unique_ptr.cxx

@@ -0,0 +1,6 @@
+#include <memory>
+int main()
+{
+  std::unique_ptr<int> u(new int(0));
+  return *u;
+}

+ 2 - 0
Source/cmConfigure.cmake.h.in

@@ -30,8 +30,10 @@
 #cmakedefine CMAKE_USE_MACH_PARSER
 #cmakedefine CMAKE_USE_LIBUV
 #cmakedefine CMAKE_ENCODING_UTF8
+#cmakedefine CMake_HAVE_CXX_MAKE_UNIQUE
 #cmakedefine CMake_HAVE_CXX_NULLPTR
 #cmakedefine CMake_HAVE_CXX_OVERRIDE
+#cmakedefine CMake_HAVE_CXX_UNIQUE_PTR
 #cmakedefine CMake_HAVE_CXX_UNORDERED_MAP
 #cmakedefine CMake_HAVE_CXX_UNORDERED_SET
 #define CMAKE_BIN_DIR "/@CMAKE_BIN_DIR@"