2016-04-07 146 views
1

我正在Cpp中構建一個項目,該項目將通過rabbitmq與我的Java應用程序進行通信,並向Twitter發佈更新。我使用的是一些庫從GitHubCMake用戶構建庫;無法爲目標指定鏈接庫

  1. rabbitmq-c

    兔子安裝到/ usr /本地/ lib64的

  2. jansson - json library

    我安裝這個前陣子另一個項目,去/ usr/local/lib

  3. twitcurl - C lib for Twitter API

    GOT安裝到/ usr/local/lib目錄

如果它的事項,我使用的克利翁爲我的IDE,定義包括當它顯示揚森和兔下自動完成 - 所以這採摘庫了我的系統不知何故

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

我將它們鏈接使用target_link_libraries(名稱庫...),我看到輸出話說

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. 

我設置LD_LIBRARY_PATH

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

我嘗試設置CMAKE_LIBRARY_PATH包括USR /本地/ lib和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) 

--warn-uninitialized運行CMake的幫助您檢測這樣的錯誤。

+0

哇,我很慢。謝謝你指出我的懶惰。 – Crushing