event.h:即使安装了libevent-dev,也没有这样的文件或目录

我正在尝试编译一个依赖libevent的库。该库是使用cmake构建系统的一个较大项目的一部分,该系统具有顶级CMakeLists.txt文件。

库目录中的CMakelists.txt文件包含

target_include_directories(<library name> PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${SOME_DEP_DIR}/include)
target_link_libraries(<library name> PUBLIC event)

libevent似乎在系统上-

$ ldconfig -p | grep event
    libtevent.so.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libtevent.so.0
    libtevent-util.so.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libtevent-util.so.0
    libevent_pthreads-2.1.so.6 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libevent_pthreads-2.1.so.6
    libevent_openssl-2.1.so.6 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libevent_openssl-2.1.so.6
    libevent_extra-2.1.so.6 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libevent_extra-2.1.so.6
    libevent_core-2.1.so.6 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libevent_core-2.1.so.6
    libevent-2.1.so.6 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libevent-2.1.so.6

event.h

$ ls -l /usr/include/event.h 
-rw-r--r-- 1 root root 2744 Feb  5  2018 /usr/include/event.h

我还安装了libevent-dev-

$ dpkg -l | grep libevent-dev
ii  libevent-dev                               2.1.8-stable-4build1                         amd64        Asynchronous event notification library (development files)

我不确定为什么运行make library时会出现以下错误-

fatal error: event.h: No such file or directory
 #include <event.h>

任何建议都会有所帮助。谢谢!

hhhhttty 回答:event.h:即使安装了libevent-dev,也没有这样的文件或目录

您需要将/ usr / include路径添加到包含目录列表中。

target_include_directories(<library name> PRIVATE /usr/include ${CMAKE_CURRENT_SOURCE_DIR} ${SOME_DEP_DIR}/include)

更新:一种更好的方法是使用cmake的pkg-config模块查找提供pkg-config的.pc文件的库。

# Add pkg-config functionality
find_package(PkgConfig REQUIRED) 

# search for libevent.pc
pkg_search_module(EVENT REQUIRED libevent)

target_include_directories(<library name> PRIVATE ${EVENT_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR} ${SOME_DEP_DIR}/include)
target_link_libraries(<library name> PUBLIC ${EVENT_LIBRARIES})

libevent.pc包含成功链接到库libevent所需的所有必要信息。

本文链接:https://www.f2er.com/3147531.html

大家都在问