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

时间:2018-05-13 23:41:54

标签: c++11 cmake mysql-connector

我正在尝试使用他们的Git repo和CMake编译MySQL Connector - C ++。我是CMake的新手,所以我可能不知道。目前,下面的代码失败,并因“CDK所需的类型std :: shared_ptr不可用”而失败。我正在使用Visual Studio 2017,并且可以正常访问std :: shared_ptr。标题包含在内。我很茫然。

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()

1 个答案:

答案 0 :(得分:1)

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