2016-04-07 28 views
1

için bağlantı kitaplıklarını belirleyemiyorum Java uygulamaları ile rabbitmq aracılığıyla iletişim kuracak ve twitter'e güncellemeler gönderecek bir Cpp projesi yapıyorum. Ben bu geri başka proje için bir süre yüklüCMake kullanıcı tarafından oluşturulmuş kütüphaneler; Hedef

jansson - json library

  • /lib64

    /usr/local yüklü

    github

    1. rabbitmq-c gelen Tavşan birkaç kütüphaneleri kullanıyorum/usr/local/libresine gitti:

      yüklü var/usr olsun, hani tanımlayan içerdiğinde otomatik tamamlama altında Jansson ve tavşan görüntüler benim IDE olarak CLION kullanıyorum konularda ise

    /yerel/lib - böylece topluyor sistemimde kapalı kütüphanelerini nasılsa

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

    I (... isim kütüphanelerini) onları target_link_libraries kullanarak bağlamak ve çıkış

    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. 
    
    diyerek bkz

    Ben usr/yerel/lib ve lib64 içerecek şekilde CMAKE_LIBRARY_PATH ayarlamak çalışıyorum ama hiçbir etkisi görünmüyor LD_LIBRARY_PATH

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

    ayarlayın. İşte benim 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) 
    

    dosyası var bana ne ben başka proje

    TARGET_LINK_LIBRARIES(${project_name} dlib jansson) ben ne kaçırdım sadece burada ekleyerek Jansson kullanır karıştıran ?? Teşekkürler

    cevap

    1

    CMake değişkenleri büyük/küçük harfe duyarlıdır, bu nedenle ${project_name} değişkeni boş bir dizeyle sonuçlanır. yani yerine ${PROJECT_NAME} kullanın .:

    target_link_libraries(${PROJECT_NAME} twitcurl jansson rabbitmq) 
    

    bayrak --warn-uninitialized ile CMake Running böyle hatalar tespit yardımcı olur.

    +0

    Vay, yavaşladım. Tembelliğime işaret ettiğin için teşekkürler. – Crushing