如何在libwebsocket编码中包含libmysql?

时间:2016-08-04 06:40:10

标签: linux cmake libmysql libwebsockets

我正在尝试使用libwebsocket来构建我的WebSocket服务器,我需要在我的代码中使用libmysql。我已经安装了libmysql并且能够使用它但我不知道如何在CMakeList.txt中使用cmake包含它

我已将它包含在我的test-server.h中

#include <mysql.h>

在我的CMakeList.txt中,我添加了这个

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

当我使用&#34; make&#34;为了制作文件,我收到了错误消息

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}"

为什么我无法链接库? 为了在我的libwebsocket服务器代码中使用libmysql,我该怎么办? 我使用ubuntu 14.04作为操作系统。

1 个答案:

答案 0 :(得分:0)

我建议您创建自己的CMakeLists.txt文件。

它应该处理您自己的代码,因为 test-server.c 只是一个示例,可以让您了解如何构建自己的服务器。在我看来,它不打算被修改。但是,当然,如果你觉得它更容易,你可以这样做。

所以,现在,如果你真的想修改libwebsockets附带的例子,并希望保留相关的CMakeLists.txt文件,那么你可以修改 create_test_app 宏并修改对 target_link_libraries (除了您已经对包含路径进行的修改之外)。

例如,您可以更改:

target_link_libraries(${TEST_NAME} websockets)

通过

target_link_libraries(${TEST_NAME} websockets mysqlclient)

利用 FindMysql.cmake 来自动找出正确的包含路径和库位置应该更好。