我正在尝试将我的一个程序链接到 libevent 。我使用 CMake 作为构建系统。我的项目结构如下:

my_project
├── CMakeLists.txt
├── README.md
├── build
│   └── Build stuff
└── software
    ├── README.md
    ├── CMakeLists.txt
    ├── include
    ├── libraries
    │   ├── libevent
    │   │   └── CMakeLists.txt
    │   └── anotherlibrary
    │       └── CMakeLists.txt
    ├── prog1
    │   ├── CMakeLists.txt
    ├── prog2
    │   ├── CMakeLists.txt
    └── prog3
        └── CMakeLists.txt

prog1 的 CMakeList.txt(需要链接到 libevent 的那个)
cmake_minimum_required(VERSION 2.6)
project (prog1)

file(GLOB prog1
    "*.h"
    "*.cpp"
)

include_directories("${PROJECT_INCLUDE_DIR}/libevent/include")

add_executable(${PROJECT_NAME} ${prog1})
target_link_libraries(${PROJECT_NAME} event_core)

但是当我构建项目时,make 找不到 libevent 构建的库。它搜索:libraries/libevent/lib/libevent_core.a 这是错误的路径,因为 libevent 在内部构建它的库:my_project/build/software/libraries/libevent/lib/libevent_core.a
我如何告诉 CMake 在那里搜索图书馆?我已经将以下几行添加到我的 Cmake 文件中,但这不起作用

链接目录(/my_project/build/software/libraries/libevent/lib/)

设置(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/build/lib)
设置(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/build/bin)

任何人的建议?

最佳答案

我通过从 build 目录中删除内容并在 cmake .. 目录中重新运行 build 自己解决了这个问题。

我认为 CMake 不知何故不知道我所做的更改,并通过重建项目解决了问题。

关于c++ - 带有外部库的 CMake 'no rule to make target',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31290573/

10-13 07:21