Как включить libmysql в кодировку libwebsocket?

Я пытаюсь использовать libwebsocket для создания своего сервера WebSocket, и мне нужно использовать libmysql в моем коде. Я установил libmysql и могу его использовать, но я не знаю, как включить его с помощью cmake в CMakeList.txt.

Я включил его в свой test-server.h

#include <mysql.h>

В моем CMakeList.txt я добавляю это

INCLUDE_DIRECTORIES(/usr/include/mysql)//this is add to the begining

когда я использую "make" для создания файла, я получаю сообщение об ошибке

CMakeFiles/test-server.dir/test-server/test-server.c.o: in function main:
test-server.c:(.text.startup+0x41): undefined reference to `mysql_init'
collect2: error: ld returned 1 exit status

Вот исходный код CMakeList.txt https://github.com/warmcat/libwebsockets/blob/master/CMakeLists.txt

CMakeList.txt предоставляется libwebsocket, и я пытаюсь отредактировать его с помощью следующего кода:

INCLUDE_DIRECTORIES(/usr/include/mysql)

Name: libwebsockets
Description: Websockets server and client library
Version: ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACK    AGE_VERSION_PATCH}
Libs: -L/usr/lib/x86_64-linux-gnu -lmysqlclient -lpthread -lz -lm -ldl -L\${libdir} -lwebsockets
Cflags: -I/usr/include/mysql -DBIG_JOINS=1  -fno-strict-aliasing    -g -DNDEBUG -I\${includedir}"

Почему я не могу подключить библиотеку? Что мне нужно сделать, чтобы использовать libmysql в коде моего сервера libwebsocket? Я использую Ubuntu 14.04 в качестве ОС.


person kennyfung    schedule 04.08.2016    source источник
comment
Ваш файл cmake содержит более 1600 строк. Создайте MCVE и размещайте его содержимое в своем вопросе, а не по внешней ссылке   -  person rgmt    schedule 04.08.2016
comment
Я пытаюсь процитировать код, который я добавил в CMakeList.txt. Я редактирую Libs и Cflags, но все равно не все в порядке...   -  person kennyfung    schedule 05.08.2016


Ответы (1)


Я бы порекомендовал вам создать собственный файл CMakeLists.txt.

Он должен позаботиться о вашем собственном коде, потому что test-server.c — это всего лишь пример, позволяющий понять, как создать собственный сервер. На мой взгляд, его не предполагается модифицировать. Но, конечно, вам решать, если вы считаете, что это проще.

Итак, теперь, если вы действительно хотите изменить пример, поставляемый с libwebsockets, и хотите сохранить связанный файл CMakeLists.txt, вы можете изменить макрос create_test_app и изменить вызовы target_link_libraries< /em> (в дополнение к изменениям, которые вы уже сделали в отношении пути включения).

Например, вы можете изменить:

target_link_libraries(${TEST_NAME} websockets)

by

target_link_libraries(${TEST_NAME} websockets mysqlclient)

Еще лучше использовать FindMysql.cmake для автоматического определения правильных путей включения и расположения библиотек.

person Pierre    schedule 01.10.2016