2016-08-04 2 views
0

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

меня включить его в мой тест-server.h

#include <mysql.h> 

В моих CMakeList.txt, я добавляю это

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

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

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

The 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 в качестве ОС.

+0

Файл cmake более 1600 строк. Пожалуйста, сделайте [MCVE] (https://www.google.fr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=7&cad=rja&uact=8&ved=0ahUKEwjWmaqFn6fOAhXKBBoKHcVhAt8QFghNMAY&url=http%3A%2F%2Fstackoverflow.com%2Fhelp % 2Fmcve & usg = AFQjCNEkKReghNZHBJSaky_hwPskMmG0ww & sig2 = FB_BPk5I8OUGCqxfz0MbSA) и опубликовать его содержимое в своем вопросе, а не по внешней ссылке – wasthishelpful

+0

извините, – kennyfung

+0

Прошу процитировать код, который я добавил в CMakeList.txt. Я редактирую Libs и Cflags, но это все еще не нормально ... – kennyfung

ответ

0

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

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

Итак, теперь, если вы действительно хотите изменить пример приходя с libwebsockets, и хотите сохранить соответствующий CMakeLists.txt файл, то вы можете модифицировать create_test_app макро и изменить вызовы target_link_libraries (в дополнение к модификации, которую вы уже сделали относительно пути include).

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

target_link_libraries(${TEST_NAME} websockets) 

по

target_link_libraries(${TEST_NAME} websockets mysqlclient) 

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

Смежные вопросы