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 [pel...@gmail.com] Sent: Wednesday, April 29, 2015 5:29 PM To: Daniel Schepler Cc: cmake@cmake.org 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 <dschep...@scalable-networks.com> 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 [pel...@gmail.com] > Sent: Wednesday, April 29, 2015 4:46 PM > To: Daniel Schepler > Cc: cmake@cmake.org > 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 > <dschep...@scalable-networks.com> 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 [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 >> > -- 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