I'd say that most of the output of mysql_config --cflags and mysql_config --libs is a bug - for the shared library, there's no need to explicitly include the pthread etc. libraries (unless, of course, your program also uses them directly). In CMake terms, they should have been PRIVATE dependencies of the shared library, rather than PUBLIC. (I don't seem to have been able to convince the MariaDB Connector/C developers of that, though...)
I'm attaching a file I wrote for our project to enable: find_package(MariaDB REQUIRED) include_directories(${MARIADB_INCLUDE_DIR}) target_link_libraries(mainexe ${MARIADB_LIBRARY}) -- Daniel Schepler ________________________________________ From: CMake [cmake-boun...@cmake.org] on behalf of Peleg Bar-Sapir [pel...@gmail.com] Sent: Wednesday, April 29, 2015 2:56 PM To: cmake@cmake.org Subject: [CMake] Linking to MySQL C++ Connector libraries using extra flags, Ubuntu 14.04 LTS, gcc Hello, First, I would like to point out that I'm new to CMake, and I'm not a professional programer by any means - just a Physics research student. I looked for answers to my issue online, but couldn't find anything that helped me. I also asked my peers and friends, but unfortunately none of them could find an answer as well. I want to use MySQL connector for C++ in a program. Usually I do this by using the 'mysql' and 'my_global' libraries, and then run gcc with this added flag: `mysql_config --cflags --libs`. Typing this command into my console results in: $mysql_config --cflags --libs -I/usr/include/mysql -DBIG_JOINS=1 -fno-strict-aliasing -g -DNDEBUG -L/usr/lib/x86_64-linux-gnu -lmysqlclient -lpthread -lz -lm -ldl meaning there are some linking flags that must be given so gcc would compile my code, apart from just "-lmysql" or "-l/usr/include/mysql". My question is how do I ensure this works also with CMake? I understand how to use the CMakeLists.txt file to configure additional external libraries, but none of them require special flags as above, at least in my basic use of them. Since there's no module for MySQL connector, I'm a bit lost here. Could anyone please give me a some advices, or point me to what should be done? Thanks, Peleg Bar Sapir -- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/cmake
if (WIN32) if (CMAKE_SIZEOF_VOID_P EQUAL 8) set(MARIADB_WIN_PATH "C:/Program Files/MariaDB/MariaDB C Client Library 64-bit") else () set(MARIADB_WIN_PATH "C:/Program Files (x86)/MariaDB/MariaDB C Client Library" "C:/Program Files/MariaDB/MariaDB C Client Library") endif () endif () # Look for the header file. find_path(MARIADB_INCLUDE_DIR NAMES mysql.h PATH_SUFFIXES include mariadb include/mariadb PATHS /usr/include/mariadb ${MARIADB_WIN_PATH}) # Look for the library. find_library(MARIADB_LIBRARY NAMES mariadb libmariadb mariadbclient libmariadbclient PATH_SUFFIXES lib mariadb lib/mariadb PATHS ${MARIADB_WIN_PATH}) # Find version string. if (MARIADB_INCLUDE_DIR AND EXISTS "${MARIADB_INCLUDE_DIR}/mysql_version.h") file(STRINGS "${MARIADB_INCLUDE_DIR}/mysql_version.h" mariadb_version_str REGEX "^#define[\t ]+MARIADB_PACKAGE_VERSION[\t ]+\".*\"") string(REGEX REPLACE "^#define[\t ]+MARIADB_PACKAGE_VERSION[\t ]+\"(.*)\".*" "\\1" MARIADB_VERSION "${mariadb_version_str}") endif () # handle the find_package args and set MYSQL_FOUND include(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(MARIADB REQUIRED_VARS MARIADB_LIBRARY MARIADB_INCLUDE_DIR VERSION_VAR MARIADB_VERSION) mark_as_advanced(MARIADB_INCLUDE_DIR MARIADB_LIBRARY)
-- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/cmake