【问题标题】:CMake compile with external libraryCMake 使用外部库编译
【发布时间】:2018-02-21 14:43:55
【问题描述】:

我尝试使用外部库编译我的代码,但每次尝试都会出错。这是我实际的 cmake 链接:

include(dependencies.cmake)
add_executable(${NAME} ${SOURCE_FILES})
target_link_libraries(${NAME} PUBLIC ${DEPENDENCIES})

这是我的dependencies.cmake:

set(LIB_PATH ${CMAKE_CURRENT_SOURCE_DIR}/lib)
find_library(MY_DEPENDENCIES NAMES myLib HINTS ${LIB_PATH} NO_DEFAULT_PATH)
set(DEPENDENCIES ${MY_DEPENDENCIES})

这是我的项目树:

Project
|----include
|----lib
|    |----libmyLib.so
|----release
|----src
|----CMakeLists.txt
|----dependencies.cmake

我遇到了这个错误

make[4]: *** No rule to make target '../lib/libmyLib.so'

我准确地说:

  • 我使用 CMake 3.9.3 在 Ubuntu 上工作
  • 我在发布时使用影子构建来构建我的项目。
  • 我不想直接使用我的 lib 的源代码或将其安装在 /usr/lib 中。

有人建议吗?

【问题讨论】:

  • 您是否尝试使用空的构建目录或从其中删除 CMakeCache.txt 文件重新配置您的项目?自从find_library 第一次执行以来,您似乎更改了项目的布局。
  • 请不要将 [已解决] 附加到您的问题标题中。如果答案解决了您的问题,只需单击答案旁边的绿色箭头将其标记为已解决。如果您自己找到了答案,您可以简单地回答您自己的问题。请参阅help center 了解更多信息。

标签: c++ cmake


【解决方案1】:

好的,所以我找到了导致错误的原因,我的外部库是一个符号链接,而不是 .so 直接,我修复了这个,现在它可以工作了

【讨论】:

    猜你喜欢
    • 2011-03-30
    • 2018-04-19
    • 1970-01-01
    • 2020-12-05
    • 2013-01-18
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多