Не собирается проект в QT Creator при использовании libpcap
Пытаюсь скомпилировать проект в QT Creator. В проекте используется библиотечка libpcap. Перед этим установил её выполнив команду:
sudo apt install libpcap-dev
Тем не менее, когда начинаю компилировать, QT Creator всячески ругается:
CMakeLists.txt:
cmake_minimum_required(VERSION 3.14)
project(spiderweb)
message (STATUS "CMAKE_INSTALL_PREFIX is ${CMAKE_INSTALL_PREFIX}")
set(CMAKE_CXX_STANDARD 14)
set(SPIDERWEB_SOURCE_DIR ${SPIDERWEB_SOURCE_DIR} "${CMAKE_SOURCE_DIR}")
set(SPIDERWEB_SUBMODULES_SOURCE_DIR ${SPIDERWEB_SUBMODULES_SOURCE_DIR} "${CMAKE_SOURCE_DIR}/submodules")
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
add_subdirectory(resources)
add_subdirectory(osModule)
add_subdirectory(wirelessModule)
add_subdirectory(comModule)
add_subdirectory(submodules/radiotap)
add_subdirectory(submodules/apimodulesspiderweb)
add_subdirectory(submodules/transportmodulestsp)
add_subdirectory(submodules/cyphermodulesblowfish)
add_subdirectory(submodules/coremodulesclient)
add_subdirectory(submodules/Common/SpiderWeb)
add_executable(${PROJECT_NAME} spiderweb.cpp
spiderweb.h
main.cpp
submodules/interface/baseInterface.cpp
submodules/interface/coreModulesInterface.cpp
submodules/interface/baseInterface.h
submodules/interface/coreModulesInterface.h
)
set_property(TARGET ${PROJECT_NAME} PROPERTY AUTOMOC ON)
set_target_properties(${PROJECT_NAME}
PROPERTIES
#ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
#LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
)
target_link_libraries(${PROJECT_NAME} resources
osModule
wirelessModule
radiotap
comModule
spiderwebstructs
)
find_package(Boost COMPONENTS REQUIRED)
target_link_libraries(${PROJECT_NAME} ${Boost_LIBRARIES})
find_package(PCAP REQUIRED)
target_link_libraries(${PROJECT_NAME} ${PCAP_LIBRARY})
find_package(LibNL REQUIRED)
target_link_libraries(${PROJECT_NAME} ${MOD_LIBS} ${LibNL_LIBRARY}
${LibNL_ROUTE_LIBRARY}
${LibNL_GENL_LIBRARY}
)
find_package(fmt REQUIRED)
target_link_libraries(${PROJECT_NAME} fmt)
find_package(spdlog REQUIRED)
target_link_libraries(${PROJECT_NAME} spdlog::spdlog)
find_package(Qt5 COMPONENTS Core Widgets REQUIRED)
target_link_libraries(${PROJECT_NAME} Qt5::Core Qt5::Widgets)
add_custom_command(
TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
${SPIDERWEB_SOURCE_DIR}/external/oui.txt
${CMAKE_BINARY_DIR}/bin/oui.txt
)
add_custom_command(
TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_BINARY_DIR}/submodules/radiotap/libradiotap.so
${CMAKE_BINARY_DIR}/bin/libradiotap.so
)
FindPCAP.cmake
find_path(PCAP_ROOT_DIR
NAMES include/pcap.h
)
find_path(PCAP_INCLUDE_DIR
NAMES pcap.h
HINTS ${PCAP_ROOT_DIR}/include
)
find_library(PCAP_LIBRARY
NAMES pcap
HINTS ${PCAP_ROOT_DIR}/lib
)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(PCAP DEFAULT_MSG
PCAP_LIBRARY
PCAP_INCLUDE_DIR
)
include(CheckCSourceCompiles)
set(CMAKE_REQUIRED_LIBRARIES ${PCAP_LIBRARY})
check_c_source_compiles("int main() { return 0; }" PCAP_LINKS_SOLO)
set(CMAKE_REQUIRED_LIBRARIES)
# check if linking against libpcap also needs to link against a thread library
if (NOT PCAP_LINKS_SOLO)
find_package(Threads)
if (THREADS_FOUND)
set(CMAKE_REQUIRED_LIBRARIES ${PCAP_LIBRARY} ${CMAKE_THREAD_LIBS_INIT})
check_c_source_compiles("int main() { return 0; }" PCAP_NEEDS_THREADS)
set(CMAKE_REQUIRED_LIBRARIES)
endif ()
if (THREADS_FOUND AND PCAP_NEEDS_THREADS)
set(_tmp ${PCAP_LIBRARY} ${CMAKE_THREAD_LIBS_INIT})
list(REMOVE_DUPLICATES _tmp)
set(PCAP_LIBRARY ${_tmp}
CACHE STRING "Libraries needed to link against libpcap" FORCE)
else ()
message(FATAL_ERROR "Couldn't determine how to link against libpcap")
endif ()
endif ()
include(CheckFunctionExists)
set(CMAKE_REQUIRED_LIBRARIES ${PCAP_LIBRARY})
check_function_exists(pcap_get_pfring_id HAVE_PF_RING)
check_function_exists(pcap_dump_open_append HAVE_PCAP_DUMP_OPEN_APPEND)
set(CMAKE_REQUIRED_LIBRARIES)
mark_as_advanced(
PCAP_ROOT_DIR
PCAP_INCLUDE_DIR
PCAP_LIBRARY
)
Ответы (1 шт):
Автор решения: Sergey Tatarincev
→ Ссылка
библиотеку к проекту подключать надо.
хотелось бы взглянуть на ваш .pro и увидеть в нем что-то типа
LIBS += /usr/lib64/libpcap.so
