Я пытаюсь скомпилировать 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 ()
Не уверен, что это связано, но в прошлом я наблюдал очень странное поведение, когда случайно выбирал Visual Studio 15 в качестве генератора для VS2015 вместо «Visual Studio 14 2015» (правильный для VS2015, эти номера версий нечетные) . Появлялись ошибки, которые не имели никакого смысла. Может быть, вы снова проверите свой генератор и не забудьте удалить кеш!





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