Ваш путь к соединителю MySQL содержит пробелы, поэтому при определении переменной заключите путь в кавычки:
set(FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR "C:/Program Files/MySQL/Connector C++ 8.0")
Кроме того, поскольку вы использовали вызовы include_directories()
, включая заголовки сSOURCE_FILES
представляется избыточным. Если вы пытаетесь вставить эти заголовки в IDE, скажем, CLion, лучше всего перечислить каждый заголовок отдельно (как вы сделали с файлами .cpp
). Перечисление заголовков как *.h
в вызове set
не будет работать.
На основании ваших отзывов у меня есть несколько предложений по дальнейшей настройке файла CMake:
- Вы устанавливаете стандарт C ++ на C ++ 17 с помощью
CMAKE_CXX_STANDARD
, а затем сразу же пытаетесь установить его на C ++ 11 с помощью CMAKE_CXX_FLAGS
. Они противоречивы, поэтому выберите только один. - Файлы, предоставленные для
add_executable()
, должны быть только исходными (.cpp
) файлами. Заголовки будут включены через другие ваши вызовы CMake. - Используйте
target_include_directories()
вместо include_directories()
, чтобы применять включенные каталоги только к определенной цели, а не все целей. Таким образом, другие цели, обрабатываемые вашим CMake, не перегружаются включениями. - Если вы хотите связать библиотеку MySQL Connector с вашим исполняемым файлом, используйте
target_link_libraries()
, чтобы предоставитьпуть к библиотеке, на которую вы хотите сослаться.
Соединив это, вы получите что-то вроде этого:
cmake_minimum_required(VERSION 3.14)
project(shared-editor-server)
# Choose only one of these standards.
set(CMAKE_CXX_STANDARD 17)
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR "C:/Program Files/MySQL/Connector C++ 8.0")
# You only really need to include your source files here.
add_executable(shared-editor-server
main.cpp
connectDB.cpp
server.cpp
)
# Add the MySQL include directories to this target.
target_include_directories(shared-editor-server PRIVATE
${FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR}/include/jdbc
)
target_include_directories(shared-editor-server PRIVATE
${FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR}/include/jdbc/cppconn
)
# Link the MySQL library to your executable.
target_link_libraries(shared-editor-server PRIVATE
${FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR}/lib64/vs14/mysqlcppconn8.lib
)