在centos下开发服务器,利用vs中的cmake链接工具构建整个项目,但是在cmake链接mysql数据库时报错,执行cmake时通过,但是执行make时报错,信息如下:
make
[ 25%] Linking CXX executable imchatserver
/usr/bin/ld: 找不到 -lmysql
collect2: 错误:ld 返回 1
make[2]: *** [IM_server/CMakeFiles/imchatserver.dir/build.make:97:IM_server/imchatserver] 错误 1
make[1]: *** [CMakeFiles/Makefile2:100:IM_server/CMakeFiles/imchatserver.dir/all] 错误 2
make: *** [Makefile:91:all] 错误 2
而整个cmake 的代码如下:
cmake_minimum_required (VERSION 3.8)
project(IM_Server)
#这个宏,会影响编译参数
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x -g -Wall -O0 -Wno-unused-variable -pthread")
#设置库目录
link_directories(# 针对64位的
${PROJECT_SOURCE_DIR}/lib
/usr/lib64/mysql/
)
#查找库路径
find_library(MYSQL_LIB libmysqlclient.so.21 /usr/lib64/mysql/)
if (NOT MYSQL_LIB)#NOT 只能用大写
message(FATAL_ERROR "not found mysqlclient.so at /usr/lib64/mysql/")
endif(NOT MYSQL_LIB)#必须进行匹配,否则会报错
set(chat_srcs
"IM_server.cpp"
"IM_server.h")
# 将源代码添加到此项目的可执行文件。
add_executable (imchatserver ${chat_srcs})
#只是确认库存在或者设置库目录,是没有用的,需要链接进来才能起效果
target_link_libraries(imchatserver mysql)
# 将源代码添加到此项目的可执行文件。
add_executable (imfileserver ${chat_srcs})
#只是确认库存在或者设置库目录,是没有用的,需要链接进来才能起效果
target_link_libraries(imfileserver)