2016-04-07 13 views
1

私はrabbitmq経由で自分のJavaアプリケーションと通信し、twitterに更新情報を投稿するプロジェクトをCppに構築しています。私は、私は別のプロジェクトのためにしばらく前にこれをインストールし CMakeユーザービルドライブラリ。ターゲットのリンクライブラリを指定できません

  • jansson - json library

  • lib64に/は/ usr/localにインストールされたウサギはgithubから

    1. rabbitmq-c

      をいくつかのライブラリを使用しています/ usr/local/libに行きました

    2. twitcurl - C lib for Twitter API

      それが重要ならば、私は含んで定義する際にオートコンプリートの下ヤンソンとウサギを表示する私のIDEとしてCLionを使用してい

    のlib /は/ usr/localにインストールガット - そのためには、ピッキングです私のシステムオフのlibsは何とか

    e.g. 
    #include <jansson.h> 
    #include <amqp.h> 
    

    私はtarget_link_libraries(名前LIBSを...)を使用して、それらをリンクし、私は出力が

    build$ cmake .. 
    
    CMake Error at CMakeLists.txt:30 (target_link_libraries): 
        Cannot specify link libraries for target "twitcurl" which is not built by 
        this project. 
    
    を言って見ます

    私はusr/local/libディレクトリとlib64にを含めるようにCMAKE_LIBRARY_PATHを設定するのではなく、任意の効果を持っていないようですしてみてくださいLD_LIBRARY_PATH

    export LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib64 
    

    を設定します。ここに私のCMakeLists.txtファイルには、私を混乱させているもの

    # 
    # This is a CMake makefile. You can find the cmake utility and 
    # information about it at http://www.cmake.org 
    # 
    
    cmake_minimum_required(VERSION 2.6) 
    
    set(PROJECT_NAME twitterUpdater) 
    set(SOURCE_FILES main.cpp) 
    
    set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) 
    set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "/usr/local/lib" 
         "/usr/local/lib64") 
    
    project(${PROJECT_NAME}) 
    find_package(X11 REQUIRED) 
    find_package(OpenCV REQUIRED) 
    
    IF (X11_FOUND) 
        INCLUDE_DIRECTORIES(${X11_INCLUDE_DIR}) 
        LINK_LIBRARIES(${X11_LIBRARIES}) 
    ENDIF (X11_FOUND) 
    
    IF (OpenCV_FOUND) 
        include_directories(${OpenCV_INCLUDE_DIRS}) 
        link_libraries(${OpenCV_LIBS}) 
    ENDIF(OpenCV_FOUND) 
    
    add_executable(${PROJECT_NAME} ${SOURCE_FILES}) 
    target_link_libraries(${project_name} twitcurl jansson rabbitmq) 
    

    だ私が持っている別のプロジェクトは、単にここTARGET_LINK_LIBRARIES(${project_name} dlib jansson)

    それを追加することにより、ヤンソンを使用している私は何を逃しました?ありがとう

    答えて

    1

    CMake変数では大文字と小文字が区別されるため、変数${project_name}は空の文字列になります。すなわち、代わりに${PROJECT_NAME}を使用してください:

    target_link_libraries(${PROJECT_NAME} twitcurl jansson rabbitmq) 
    
    CMakeの実行

    フラグ--warn-uninitializedであなたは、このようなミスを検出するのに役立ちます。

    +0

    うわー、遅いです。私の怠惰を指摘してくれてありがとう。 – Crushing

    関連する問題