我正在尝试使用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当我使用" 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}"为什么我不能链接库?我应该怎么做才能在我的libwebsocket服务器代码中使用libmysql?我使用ubuntu 14.04作为操作系统。
发布于 2016-10-01 19:01:22
我建议您创建自己的CMakeLists.txt文件。
它应该负责您自己的代码,因为test-server.c只是一个让您了解如何构建自己的服务器的示例。在我看来,它不打算被修改。但是,当然,如果你认为这样做更容易,那就由你来决定。
因此,现在,如果您确实希望修改libwebsocket附带的示例,并希望保留相关的CMakeLists.txt文件,那么您可以修改create_test_app宏并修改对target_link_libraries的调用(除了您已经对包含路径所做的修改之外)。
例如,您可以更改:
target_link_libraries(${TEST_NAME} websockets)通过
target_link_libraries(${TEST_NAME} websockets mysqlclient)利用FindMysql.cmake自动找出正确的包含路径和库位置应该更好。
https://stackoverflow.com/questions/38760141
复制相似问题