我有一个依赖记录器库的演示项目,相关文件的文件结构如下所示:
.
├── 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
,我不知道如何解决这个问题,请帮忙。
答案 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})
命令前面的某个位置。
问题解决了!