CMake“没有规则来创建目标”与外部库

Faa*_*aas 3 c++ makefile cmake libevent

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

\n\n
my_project\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CMakeLists.txt\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 README.md\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 build\n\xe2\x94\x82\xc2\xa0  \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Build stuff\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 software\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 README.md\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CMakeLists.txt\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 include\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 libraries\n    \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 libevent\n    \xe2\x94\x82   \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 CMakeLists.txt\n    \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 anotherlibrary\n    \xe2\x94\x82\xc2\xa0\xc2\xa0 \xc2\xa0\xc2\xa0  \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 CMakeLists.txt\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 prog1\n    \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CMakeLists.txt\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 prog2\n    \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CMakeLists.txt\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 prog3\n        \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 CMakeLists.txt\n
Run Code Online (Sandbox Code Playgroud)\n\n

prog1 的 CMakeList.txt(需要链接到 libevent 的那个)

\n\n
cmake_minimum_required(VERSION 2.6)\nproject (prog1)\n\nfile(GLOB prog1\n    "*.h"\n    "*.cpp"\n)\n\ninclude_directories("${PROJECT_INCLUDE_DIR}/libevent/include")\n\nadd_executable(${PROJECT_NAME} ${prog1})\ntarget_link_libraries(${PROJECT_NAME} event_core)\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是当我构建项目时,make 找不到 libevent 构建的库。它搜索:libraries/libevent/lib/libevent_core.a这是错误的路径,因为 libevent 在里面构建了它的库:my_project/build/software/libraries/libevent/lib/libevent_core.a

\n\n

我如何告诉 CMake 在那里搜索库?我已经将以下行添加到我的 Cmake 文件中,但这不起作用

\n\n
\n link_directories(/my_project/build/software/libraries/libevent/lib/)\n\n SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/build/lib)\n SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/build/bin)\n
\n\n

有人有建议吗?

\n

Faa*_*aas 5

我通过从目录中删除内容buildcmake ..build目录中重新运行来自行解决了问题。

我认为 CMake 不知何故没有意识到我所做的更改,通过重建项目问题得到了解决。