2016-03-19 8 views
0

依存ライブラリを見つけることができない、関連するファイルのファイル構造は、以下のように記載されています:私はという名前の静的ライブラリを構築していcmakeのは、私がロガーライブラリに依存しているデモプロジェクトを持っている

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

./FancyLogger/binディレクトリのlibFancyLogger.a。 (バージョン3.3) プロジェクト(HelloClion)

セット(CMAKE_CXX_FLAGS "$ {CMAKE_CXX_FLAGS} -std = C++ 11")

cmake_minimum_required:プロジェクト HelloClion

マイCMakeFilesは、以下のように記載されています

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

私はその理由を見つけたようです。 ;)cmakeのドキュメントで

https://cmake.org/cmake/help/v3.0/command/link_directories.html

link_directories(にdirectory1 directory2 ...)

リンカがライブラリを検索する必要があり するパスを指定します。このコマンドは、呼び出された後に作成された ターゲットにのみ適用されます。

docは、コマンドは、呼び出された後に作成されたターゲットにのみ適用されます。ですから、link_directories(${CODE_ROOT}/FancyLogger/bin)add_executable(HelloClion ${SOURCE_FILES})コマンドの前のある位置に移動するだけです。

問題が解決しました。

関連する問題