cmake std::shared_ptr CHECK_CXX_SOURCE_COMPILES 失败 mysql connector-c++ pre-build

cmake std::shared_ptr CHECK_CXX_SOURCE_COMPILES fails mysql connector-c++ pre-build

我正在尝试使用他们的 Git 存储库和 CMake 编译 MySQL Connector--C++。我是 CMake 的新手,所以我可能不知道。就目前而言,下面的代码失败了,并且失败为 "Type std::shared_ptr required by CDK is not available"。我使用的是 Visual Studio 2017,可以正常访问 std::shared_ptr。 header 包括在内。我很茫然。

set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -std=c++11")

INCLUDE(CheckCXXSourceCompiles)

CHECK_CXX_SOURCE_COMPILES(
  "#include <memory>
   void test(std::shared_ptr<int>) {};
   int main() { return 0; }"
  HAVE_SHARED_PTR
)
#message("HAVE_SHARED_PTR: ${HAVE_SHARED_PTR}")
ADD_CONFIG(HAVE_SHARED_PTR)

if (NOT HAVE_SHARED_PTR)
  message(FATAL_ERROR "Type std::shared_ptr required by CDK is not available")
endif()

我收到了来自 MySQL 错误报告系统的反馈。在 vs ide 中,CXX 是什么,或者不是什么,不能使用 CHECK_CXX_SOURCE_COMPILES 编译测试代码。给出的解决方案是检查 msvc 编译器是否处于或高于某个版本,可以保证这些功能存在。另一种方法是使用带有 msvc 编译器的 cmake 命令行,或者再次使用带有 msvc 编译器的 cmake gui 工具。我只想使用 vs ide。头文件也有几个问题。建议直接从 Boost 中获取,但只有字节序存在,没有字节序。我的最终解决方案是使用 .Net 连接器和互操作,因为涉及 MySQL 的任务很大而且是连续的,而不是关键任务。并且不受 c# 的过度影响。