2016-08-04 65 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自動找出什麼是正確的包括路徑和圖書館地點。