【问题标题】:cmake can't find the depending librarycmake 找不到依赖库
【发布时间】:2016-03-19 02:51:06
【问题描述】:

我有一个依赖记录器库的演示项目,相关文件的文件结构如下:

.
├── FancyLogger
│   ├── CMakeLists.txt
│   ├── FancyLogger.cpp
│   ├── FancyLogger.h
│   ├── bin
│   │   └── libFancyLogger.a
└── HelloClion
    ├── CMakeLists.txt
    ├── helloclion.cpp

我在./FancyLogger/bin 目录中构建了一个名为libFancyLogger.a 的静态库。

我的项目HelloClion的CMakeFiles如下: cmake_minimum_required(版本 3.3) 项目(HelloClion)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

get_filename_component(CODE_ROOT ${CMAKE_CURRENT_SOURCE_DIR} DIRECTORY)

set(SOURCE_FILES helloclion.cpp)

add_executable(HelloClion ${SOURCE_FILES})
include_directories(${CODE_ROOT}/FancyLogger)
link_directories(${CODE_ROOT}/FancyLogger/bin)
target_link_libraries(HelloClion FancyLogger)

但是链接器抱怨library not found for -lFancyLogger,我不知道如何解决这个问题,请帮忙。

【问题讨论】:

    标签: cmake


    【解决方案1】:

    我似乎找到了原因。 ;)

    在cmake文档中:https://cmake.org/cmake/help/v3.0/command/link_directories.html

    link_directories(directory1 directory2 ...)

    指定路径 链接器应该搜索库。该命令仅适用于 调用后创建的目标。

    文档说,该命令仅适用于调用后创建的目标。所以我只需要将link_directories(${CODE_ROOT}/FancyLogger/bin) 移动到add_executable(HelloClion ${SOURCE_FILES}) 命令前面的某个位置。

    问题解决了!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-31
      • 2013-06-20
      • 2015-08-21
      • 2019-08-05
      • 2014-08-26
      • 2014-05-28
      相关资源
      最近更新 更多