2016-08-04 59 views
0

我想用libwebsocket来建立我的WebSocket服务器,我需要在我的代码中使用libmysql。我安装的libmysql,并能够使用它,但我不知道如何使用cmake在CMakeList.txt它包括如何在libwebsocket编码中包含libmysql?

我包括在我的测试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

的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

您的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(除到你已经对包含路径进行的修改)。

例如,你可以改变:

target_link_libraries(${TEST_NAME} websockets) 

通过

target_link_libraries(${TEST_NAME} websockets mysqlclient) 

它应该会更好采取优势FindMysql.cmake自动找出什么是正确的包括路径和图书馆地点。