2017-02-20 15 views
0

こんにちは私は単純な共有ライブラリを使用しようとしています。 cmakeを共有(ダイナミック)ライブラリで使用する

$ make 
Scanning dependencies of target myprog 
[ 50%] Building C object CMakeFiles/myprog.dir/main.c.o 
[100%] Linking C executable myprog.exe 
/usr/lib/gcc/x86_64-pc-cygwin/5.4.0/../../../../x86_64-pc-cygwin/bin/ld: cannot find -lhello-user 
collect2: error: ld returned 1 exit status 
clang-3.8: error: linker (via gcc) command failed with exit code 1 (use -v to see invocation) 
make[2]: *** [CMakeFiles/myprog.dir/build.make:95: myprog.exe] Error 1 
make[1]: *** [CMakeFiles/Makefile2:68: CMakeFiles/myprog.dir/all] Error 2 
make: *** [Makefile:84: all] Error 2 

CMakeLists.txtは、ファイルのエラーを(私が最初にうまく働いたcmake .を実行しなかったし、エラーを返すdidntは)

cmake_minimum_required(VERSION 2.8.8) 
project(LIB_EXAMPLE) 
set(CMAKE_C_COMPILER clang) 
add_executable(myprog main.c) 
target_link_libraries(myprog hello-user) 

ライブラリがlibhello-user.dll.a

として /usr/local/lib/の内側に存在します

注:私はcmakeとmakeでcygwinを使用しています。

+1

可能性のある重複した[正しくモジュラープロジェクトのcmakeのファイルを作成する方法](http://stackoverflow.com/questions/41519666/how-to-correctly-create-a-cmake-file -for-a-modular-project)である。 [CMake /チュートリアル/ターゲットのエクスポートとインポート](https://cmake.org/Wiki/CMake/Tutorials/Exporting_and_Importing_Targets)を参照してください。私はおそらく 'add_library(hello-user SHARED IMPORTED GLOBAL)'で始まるものを追加します。 – Florian

+0

新しいライブラリを作成していませんか?私は現在のものを使用しようとしています。 ? – Mark

+0

はい、解決策は同じです。下の私の答えを見てください。 – Florian

答えて

1

CMake/Tutorials/Exporting and Importing Targetsを参照してください答えに私のコメントを回します。

あなたのどちらかがあります

  • をCMakeのが
  • 自動的にそれを探していません
    • あなたはfind_library(_lib_path NAMES hello-user)
  • のようなものを追加する必要がありますライブラリの完全なパスに名前を付けます
  • またはそれ以上 - IMPORTED対象に入れる

    cmake_minimum_required(VERSION 2.8.8) 
    project(LIB_EXAMPLE) 
    
    add_library(hello-user SHARED IMPORTED GLOBAL) 
    set_target_properties(
        hello-user 
        PROPERTIES 
         IMPORTED_LOCATION /usr/local/lib/libhello-user.dll 
         IMPORTED_IMPLIB /usr/local/lib/libhello-user.dll.a 
    )  
    
    add_executable(myprog main.c) 
    target_link_libraries(myprog hello-user) 
    
+0

ありがとうございます。私のやり方がうまくいかなかった理由を説明できますか? – Mark

関連する問題