CMake用户构建的库;无法为目标指定链接库



我正在Cpp中构建一个项目,该项目将通过rabbitmq与我的Java应用程序通信,并将更新发布到twitter。我正在使用github 的一些库

  1. rabbitmq-c

    Rabbit已安装到/usr/local/lib64

  2. jansson-json库

    我不久前为另一个项目安装了这个,转到/usr/local/lib

  3. twitcurl-用于Twitter API 的C库

    已安装到/usr/local/lib

如果重要的话,我使用CLion作为我的IDE,在定义includes时,它会在auto-complete下显示jansson和rabbit,所以这是在某种程度上从我的系统中挑选libs

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)

我错过了什么??感谢

CMake变量区分大小写,因此变量${project_name}会产生一个空字符串。改为使用${PROJECT_NAME},即:

target_link_libraries(${PROJECT_NAME} twitcurl jansson rabbitmq)

运行带有标志--warn-uninitialized的CMake可以帮助您检测这样的错误。

最新更新