Oh, ok. It works (had to solve some conflicting definitions between
OpenCV and MySQL libraries, but I managed that).

Thanks a lot!

I would excuse the the obvious issue with mainexe by stating it's late
(3AM here), but I'm a night-owl, so that's not really an excuse...
should be more sharp next time ;)

Peleg

On Thu, Apr 30, 2015 at 2:50 AM, Daniel Schepler
<[email protected]> wrote:
> OK, my target_link_libraries() line was just an example not knowing your 
> executable name - you'd want to update it to 
> target_link_libraries(entity_find_visual ${MYSQL_LIBRARY}) .  (And 
> personally, I'd group the find_package calls together, then combine the 
> target_link_libraries lines into one - 
> target_link_libraries(entity_find_visual ${OpenCV_LIBS} ${MYSQL_LIBRARY}).)
> --
> Daniel
> ________________________________________
> From: Peleg Bar-Sapir [[email protected]]
> Sent: Wednesday, April 29, 2015 5:29 PM
> To: Daniel Schepler
> Cc: [email protected]
> Subject: Re: [CMake] Linking to MySQL C++ Connector libraries using extra 
> flags, Ubuntu 14.04 LTS, gcc
>
> For some reasons, now the "cmake ." command doesn't work either. I
> haven't yet begun debugging, but I played a bit with the
> CMakeLists.txt file, and then returned it to it's original state, with
> your added lines (replacing mariadb with mysqldb, of course).
> Now I get this error:
>
> $ cmake .
> CMake Error at CMakeLists.txt:9 (target_link_libraries):
>   Cannot specify link libraries for target "mainexe" which is not built by
>   this project.
>
> The CMakeLists.txt looks like this:
>
> cmake_minimum_required(VERSION 2.8)
> project( entity_find_visual )
> find_package( OpenCV REQUIRED )
> add_executable( entity_find_visual entity_find_visual.cpp)
> target_link_libraries( entity_find_visual ${OpenCV_LIBS} )
> set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} 
> "${CMAKE_SOURCE_DIR}/cmake/Modules/")
> find_package(MySQL REQUIRED)
> include_directories(${MYSQL_INCLUDE_DIR})
> target_link_libraries(mainexe ${MYSQL_LIBRARY})
>
> (a bit ugly, I know, but it worked before).
>
> I'm quite puzzled now, I must admit.
>
> On Thu, Apr 30, 2015 at 1:50 AM, Daniel Schepler
> <[email protected]> wrote:
>> 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

Reply via email to