【发布时间】:2016-04-07 17:19:29
【问题描述】:
我正在 Cpp 中构建一个项目,它将通过 rabbitmq 与我的 Java 应用程序进行通信,并将更新发布到 twitter。我正在使用来自 github 的一些库
-
Rabbit 安装到 /usr/local/lib64
-
我为另一个项目安装了这个,去了 /usr/local/lib
-
twitcurl - C lib for Twitter API
安装到 /usr/local/lib
如果重要的话,我使用 CLion 作为我的 IDE,它会在定义包含时在自动完成下显示 jansson 和 rabbit - 所以这会以某种方式从我的系统中挑选出库
e.g.
#include <jansson.h>
#include <amqp.h>
我使用 target_link_libraries(name 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.
我设置了 LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib64
我尝试将 CMAKE_LIBRARY_PATH 设置为包含 usr/local/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)
让我困惑的是我使用 jansson 的另一个项目,只需在此处添加 TARGET_LINK_LIBRARIES(${project_name} dlib jansson)
我错过了什么??谢谢
【问题讨论】:
标签: c++ c makefile linker cmake