From 9a2d26fc3b9ad57a18e205f2edbd13627b01d891 Mon Sep 17 00:00:00 2001 From: David Baranyai Date: Tue, 16 Oct 2018 13:04:00 +0200 Subject: [PATCH] Added mysql support --- CMakeLists.txt | 11 +++++++- FindMYSQL.cmake | 74 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 FindMYSQL.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index dc945d3..5c7d264 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,7 +27,7 @@ set(ROOT_LIBRARIES -L${ROOT_LIBRARY_DIR} -lCore -lRIO -lNet -lHist -lGraf -lGraf # Locate sources and headers for this project # NB: headers are included so they will show up in IDEs # -file(GLOB sources ${PROJECT_SOURCE_DIR}/src/*.cpp) +file(GLOB sources ${PROJECT_SOURCE_DIR}/source/*.cpp) file(GLOB headers ${PROJECT_SOURCE_DIR}/include/*.hpp) #---------------------------------------------------------------------------- @@ -36,6 +36,15 @@ file(GLOB headers ${PROJECT_SOURCE_DIR}/include/*.hpp) add_executable(DB_Track DB_Track.cpp ${sources} ${headers}) target_link_libraries(DB_Track ${ROOT_LIBRARIES} ) +#---------------------------------------------------------------------------- +# Locate MySQL sources and libraries +list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}) +find_package(MySQL REQUIRED) + +include_directories(${MYSQL_INCLUDE_DIR}) +target_link_libraries(DB_Track ${MYSQL_LIBRARY}) + + #---------------------------------------------------------------------------- # Install the executable to 'bin' directory under CMAKE_INSTALL_PREFIX # diff --git a/FindMYSQL.cmake b/FindMYSQL.cmake new file mode 100644 index 0000000..d4a3606 --- /dev/null +++ b/FindMYSQL.cmake @@ -0,0 +1,74 @@ +# Find MySQL + +# Find the native MySQL includes and library +# +# MYSQL_INCLUDE_DIR - where to find mysql.h, etc. +# MYSQL_LIBRARIES - List of libraries when using MySQL. +# MYSQL_FOUND - True if MySQL found. + +if(MYSQL_INCLUDE_DIR OR MYSQL_) + # Already in cache, be silent + SET(MYSQL_FIND_QUIETLY TRUE) +endif() + +if(NOT WIN32) + find_program(MYSQL_CONFIG_EXECUTABLE mysql_config + /usr/bin/ + /usr/local/bin + $ENV{MYSQL_DIR}/bin + ) +endif() + +if(MYSQL_CONFIG_EXECUTABLE) + execute_process(COMMAND ${MYSQL_CONFIG_EXECUTABLE} --cflags OUTPUT_VARIABLE MYSQL_CFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE) + separate_arguments(MYSQL_CFLAGS) + string( REGEX MATCH "-I[^;]+" MYSQL_INCLUDE_DIR "${MYSQL_CFLAGS}" ) + string( REPLACE "-I" "" MYSQL_INCLUDE_DIR "${MYSQL_INCLUDE_DIR}") + string( REGEX REPLACE "-I[^;]+;" "" MYSQL_CFLAGS "${MYSQL_CFLAGS}" ) + execute_process(COMMAND ${MYSQL_CONFIG_EXECUTABLE} --libs OUTPUT_VARIABLE MYSQL_LIBRARIES OUTPUT_STRIP_TRAILING_WHITESPACE) +else() + find_path(MYSQL_INCLUDE_DIR mysql.h + /usr/local/mysql/include + /usr/local/include/mysql + /usr/local/include + /usr/include/mysql + /usr/include + /usr/mysql/include + /usr/local/mysql-8.0.12-macos10.13-x86_64/include + $ENV{MYSQL_DIR}/include + ) + set(MYSQL_NAMES mysqlclient mysqlclient_r) + find_library(MYSQL_LIBRARY NAMES ${MYSQL_NAMES} + PATHS /usr/local/mysql/lib /usr/local/lib /usr/lib /usr/local/mysql-8.0.12-macos10.13-x86_64/lib $ENV{MYSQL_DIR}/lib $ENV{MYSQL_DIR}/lib/opt + ) + set(MYSQL_LIBRARIES ${MYSQL_LIBRARY}) +endif() + +if(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARIES) + set(MYSQL_FOUND TRUE) + if(WIN32) + string(REPLACE mysqlclient libmysql libmysql ${MYSQL_LIBRARY}) + set(MYSQL_LIBRARIES ${libmysql} ${MYSQL_LIBRARIES}) + endif() +else() + set(MYSQL_FOUND FALSE) + set(MYSQL_LIBRARIES ) +endif() + +if(MYSQL_FOUND) + if(NOT MYSQL_FIND_QUIETLY) + message(STATUS "Found MySQL libraries: ${MYSQL_LIBRARIES}") + message(STATUS "Found MySQL includes: ${MYSQL_INCLUDE_DIR}") + endif() +else() + if(MYSQL_FIND_REQUIRED) + message(STATUS "Looked for MySQL libraries named ${MYSQL_NAMES}.") + message(FATAL_ERROR "Could NOT find MySQL library") + endif() +endif() + +mark_as_advanced( + MYSQL_CONFIG_EXECUTABLE + MYSQL_LIBRARY + MYSQL_INCLUDE_DIR +)