Здесь находится mysqlclient.so
[dbn@hecs-137331 mysql]$ pwd
/usr/lib64/mysql
[dbn@hecs-137331 mysql]$ ls
INFO_BIN libmysqlclient.so libmysqlclient.so.21 plugin
INFO_SRC libmysqlClient.so libmysqlclient.so.21.1.26
И вот как мой CMakeLists.txt включает библиотеку
target_include_directories(main PUBLIC "usr/lib64/mysql")
include_directories("usr/lib64/mysql")
target_link_libraries(main mysqlclient)
Это сообщение об ошибке
[dbn@hecs-137331 build]$ make
[ 14%] Built target zlog
[ 23%] Built target buffer
[ 47%] Built target http
[ 61%] Built target pool
[ 80%] Built target server
[ 90%] Built target timer
[ 95%] Linking CXX executable bin/main
/usr/bin/ld: cannot find -lmysqlclient
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/main.dir/build.make:109: bin/main] Error 1
make[1]: *** [CMakeFiles/Makefile2:213: CMakeFiles/main.dir/all] Error 2
make: *** [Makefile:91: all] Error 2
Я просто устанавливаю mysql с помощью «sudo yum install mysql», поэтому нет файла с именем «mysqlConfig.cmake», и я не использую find_package
В настоящее время,
link_directories("usr/lib64/mysql")target_link_libraries(main mysqlclient)link_directories("usr/lib64/mysql")
все вышеперечисленное не может найти libmysqlclient.so и показать сообщение /usr/bin/ld: cannot find -lmysqlclient
И я также попытался скопировать библиотеку в каталог /usr/bin. Это тоже не работает.






Я почти уверен, что вы хотели использовать link_directories где-то там. И этот путь является абсолютным путем, поэтому он должен начинаться с косой черты. Бывший. link_directories("/usr/lib64/mysql").
Кроме того, я не вижу смысла в ваших *_include_directories вызовах команд, так как из вашего ls вывода не похоже, что там есть что-то, что вы хотели бы #include.
Примечание. Я не уверен, что это хорошая идея — жестко задавать машинно-зависимые пути в конфигурации проекта CMake.