I'd put debugging statements in to see what is being returned as
MYSQL_INCLUDE_DIR and MYSQL_LIBRARY; and if those look correct, I'd run "make
VERBOSE=1" to check exactly what's on the compilation command line.
--
Daniel
________________________________________
From: Peleg Bar-Sapir [[email protected]]
Sent: Wednesday, April 29, 2015 4:46 PM
To: Daniel Schepler
Cc: [email protected]
Subject: Re: [CMake] Linking to MySQL C++ Connector libraries using extra
flags, Ubuntu 14.04 LTS, gcc
Hello Daniel,
Thanks for your help.
I took your file and plagiarized it, replacing
"MariaDB"/MARIADB"/"mariadb" with "MySQL"/"MYSQL"/"mysql" accordinly -
and did the same for the CMakeLists.txt (I put FindMySQL.cmake in
/CMake/Modules). Running 'cmake .' now gives no error, but running
make gives me still the linking error:
$ make
[100%] Building CXX object
CMakeFiles/entity_find_visual.dir/entity_find_visual.cpp.o
/home/[...]/find_visual/entity_find_visual.cpp:17:19: fatal error:
mysql.h: No such file or directory
#include <mysql.h>
^
compilation terminated.
make[2]: *** [CMakeFiles/entity_find_visual.dir/entity_find_visual.cpp.o]
Error 1
make[1]: *** [CMakeFiles/entity_find_visual.dir/all] Error 2
make: *** [all] Error 2
This is almost exactly what happens when I run a Makefile without the flag:
$make foo
g++ foo.cpp foolib.cpp -o foo `pkg-config --cflags --libs gsl` -std=c++11
In file included from foo.cpp:5:0:
foolib.h:16:23: fatal error: my_global.h: No such file or directory
#include <my_global.h>
^
compilation terminated.
Am I missing something?
Peleg
On Thu, Apr 30, 2015 at 12:52 AM, Daniel Schepler
<[email protected]> wrote:
> 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 [[email protected]] on behalf of Peleg Bar-Sapir
> [[email protected]]
> Sent: Wednesday, April 29, 2015 2:56 PM
> To: [email protected]
> 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
>
--
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