2016-03-19 7 views
0

ich ein Demo-Projekt, das auf einem Logger Bibliothek verlassen, die Dateistruktur der relevanten Dateien sind wie unten aufgeführt:Cmake kann die Abhängigkeit Bibliothek finden

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

Ich baue eine statische Bibliothek mit dem Namen als libFancyLogger.a im Verzeichnis ./FancyLogger/bin.

Mein CMakeFiles des Projekts ist HelloClion wie unten aufgeführt: cmake_minimum_required (VERSION 3.3) Projekt (HelloClion)

Satz (CMAKE_CXX_FLAGS "$ {} CMAKE_CXX_FLAGS -std = C++ 11")

Aber der Linker beklagt, dass library not found for -lFancyLogger, ich weiß nicht, wie das zu beheben, bitte helfen.

Antwort

0

Ich scheint herauszufinden, warum. ;)

In der Cmake Dokumentation: https://cmake.org/cmake/help/v3.0/command/link_directories.html

link_directories (directory1 directory2 ...)

Geben Sie die Pfade, in denen der Linker für Bibliotheken suchen soll. Der Befehl gilt nur für Ziele, die nach dem Aufruf erstellt wurden.

Das Dokument sagt, der Befehl gilt nur für Ziele, die nach dem Aufruf erstellt wurden. Also muss ich nur link_directories(${CODE_ROOT}/FancyLogger/bin) in eine Position vor dem add_executable(HelloClion ${SOURCE_FILES}) Befehl verschieben.

Probleme gelöst!

Verwandte Themen