我正在尝试使用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作为操作系统。
答案 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 来自动找出正确的包含路径和库位置应该更好。