cmake std :: shared_ptr CHECK_CXX_SOURCE_COMPILES не проходит предварительную сборку MySQL-коннектора-c ++ - PullRequest
0 голосов
/ 14 мая 2018

Я пытаюсь скомпилировать MySQL Connector - C ++, используя их репозиторий Git и CMake.Я новичок в CMake, так что я просто не знаю.В существующем коде, приведенном ниже, происходит сбой, и происходит сбой, так как «Тип std :: shared_ptr, требуемый CDK, недоступен».Я использую 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 голосов
/ 09 июня 2018

Я получил отзыв от системы отчетов об ошибках MySQL.То, что CXX находится под капотом или не относится к этому, в vs ide, не способно скомпилировать тестовый код с использованием CHECK_CXX_SOURCE_COMPILES.Данное решение состояло в том, чтобы проверить, находится ли компилятор msvc на уровне или выше определенной сборки, где можно гарантировать наличие функций.Альтернативой является использование либо командной строки cmake с компилятором msvc, либо снова с помощью инструмента cmake gui с компилятором msvc.Я бы просто хотел использовать против Ide.Есть также пара проблем с заголовочными файлами.Предполагается, что вы можете взять их непосредственно из Boost, но существует только порядок байтов, а не метеор.Мое окончательное решение заключается в использовании .Net-коннектора и взаимодействия, поскольку задачи, связанные с MySQL, являются большими и последовательными, а не критическими.и не сильно зависит от C #.

...