【问题标题】:Include external Library cmake包括外部库 cmake
【发布时间】:2017-01-10 16:07:23
【问题描述】:

我想使用 SQLAPI 库,我已将包含目录中的所有文件复制到 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

【问题讨论】:

标签: c++ cmake include linker-errors


【解决方案1】:

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

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

target_link_libraries(${PROJECT_NAME} sqlapi)

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-09
    • 1970-01-01
    • 2012-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多