cmake无法找到依赖库

时间:2016-03-19 02:51:06

标签: cmake

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

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

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

我的项目HelloClion的CMakeFiles如下所示: cmake_minimum_required(VERSION 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,我不知道如何解决这个问题,请帮忙。

1 个答案:

答案 0 :(得分: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})命令前面的某个位置。

问题解决了!

相关问题