event.h: нет такого файла или каталога, даже если установлен libevent-dev - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь скомпилировать библиотеку, которая зависит от 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>

Любые предложения будут полезны. Спасибо!

1 Ответ

1 голос
/ 07 ноября 2019

Вам необходимо добавить путь / usr / include в список включаемых каталогов.

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

ОБНОВЛЕНИЕ : Лучшим подходом является использование модуля pmag-config cmake для поиска библиотеккоторые предоставляют файл ppg-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.

...