Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++11 cmake std::shared_ptr CHECK_CXX_SOURCE_编译失败mysql connector-c++;预构建_C++11_Cmake_Mysql Connector - Fatal编程技术网

C++11 cmake std::shared_ptr CHECK_CXX_SOURCE_编译失败mysql connector-c++;预构建

C++11 cmake std::shared_ptr CHECK_CXX_SOURCE_编译失败mysql connector-c++;预构建,c++11,cmake,mysql-connector,C++11,Cmake,Mysql Connector,我正在尝试使用他们的Git repo和CMake编译MySQL连接器——C++。我是CMake的新手,所以我可能不知道。目前,下面的代码失败,并且由于“CDK所需的类型std::shared_ptr不可用”而失败。我使用的是Visual Studio 2017,可以很好地访问std::shared\u ptr。包括标题。我不知所措 set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -std=c++11") INCLUDE(CheckCXXSou

我正在尝试使用他们的Git repo和CMake编译MySQL连接器——C++。我是CMake的新手,所以我可能不知道。目前,下面的代码失败,并且由于“CDK所需的类型std::shared_ptr不可用”而失败。我使用的是Visual Studio 2017,可以很好地访问std::shared\u 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()
set(CMAKE\u REQUIRED\u FLAGS“${CMAKE\u REQUIRED\u FLAGS}-std=c++11”)
包括(检查CXX资源组件)
检查\u CXX\u源代码\u编译(
“#包括
无效测试(std::shared_ptr){};
int main(){return 0;}”
分享
)
#消息(“HAVE_SHARED_PTR:${HAVE_SHARED_PTR}”)
添加配置(共享)
如果(没有共享)
消息(致命错误“类型std::CDK所需的共享ptr不可用”)
endif()

我收到了MySQL bug报告系统的反馈。在vs ide中,什么样的CXX在幕后,或者不在幕后,都无法使用CHECK\u CXX\u SOURCE\u COMPILES编译测试代码。给出的解决方案是检查msvc编译器是否处于或高于某个特定版本,在该版本中可以保证存在这些特性。另一种方法是将cmake命令行与msvc编译器一起使用,或者再次与msvc编译器一起使用cmake gui工具。我只想使用vs ide。头文件也有一些问题。建议您可以直接从Boost获取它们,但只有endian存在,而不是byteorder。我的最终解决方案是使用.Net连接器和互操作,因为涉及MySQL的任务是大型的、连续的,而不是关键任务。而且不受c#的过度影响。

能够使用从cmake站点下载的cmake工具和vc编译器检查CXX(源代码)编译。我只需要指向endian和字节码头。看起来很合理。虽然不是正确的解决方案。不确定这是否相关,但在过去,我曾观察到一些非常奇怪的行为,当时我无意中选择Visual Studio 15作为VS2015的生成器,而不是“Visual Studio 14 2015”(VS2015的正确版本,那些版本号是奇数)。出现了一些毫无意义的错误。也许你再次检查你的生成器,别忘了删除你的缓存!