包括外部库cmake

时间:2017-01-10 16:07:23

标签: c++ cmake include linker-errors

我想使用SQLAPI库,我已将include目录中的所有文件复制到usr / local / include / SQLAPI,并将lib目录中的所有文件复制到usr / local / lib。 lib文件名为libsqlapi.a /libsqlapi.so和libsqlapiu.a /libsqlapiu.so。

我的cmakeLists.txt看起来像这样:

project(gsl_test)
cmake_minimum_required(VERSION 2.8)

SET(CMAKE_CXX_FLAGS "-std=c++0x")

aux_source_directory(. SRC_LIST)
include_directories(usr/local/include)
link_directories(usr/local/lib)

add_executable(${PROJECT_NAME} ${SRC_LIST})
target_link_libraries(${PROJECT_NAME} libsqlapi)

我收到构建/链接器错误:找不到-llibsqlapi。

我也尝试过target_link_libraries($ {PROJECT_NAME} sqlapi),但它给了我额外的"跳过不兼容的//usr/local/lib/libsqlapi.so" (和.a相同)找不到-lsqlapi

1 个答案:

答案 0 :(得分:0)

好的,我会将我的编辑更改为答案:

链接器抱怨的原因是您以错误的方式指定了库。 lib只是前缀 - 如果您使用target_link_libraries,则使用库名的其余部分。改为

target_link_libraries(${PROJECT_NAME} sqlapi)

解决了这个问题。您现在收到的错误

  

跳过不兼容的//usr/local/lib/libsqlapi.so

很可能是因为您复制了某些预构建包中的所有文件并且与您的系统不兼容。您需要自己重新编译库。