我已经在我的 linux 机器上安装了 c++ 库 pcapplusplus
并且 .a
文件已经放在 /usr/local/lib
。我现在尝试使用 target_link_libraries(${PROJECT_NAME} libCommon++.a libPacket++.a libPcap++.a)
在 cmake 中将我的项目与它链接起来。但是,它找不到作为 libPacket++.a
一部分的 Packet.h
。我在这里做错了什么?我必须告诉 cmake 去哪里看吗?
cmake_minimum_required(VERSION 2.8.9)
project(networksniffer)
# The version number.
set (networksniffer_VERSION_MAJOR 1)
set (networksniffer_VERSION_MINOR 0)
set(CMAKE_BINARY_DIR ${CMAKE_SOURCE_DIR}/build)
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR})
set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR})
set(PROJECT_SOURCE_DIR ${CMAKE_SOURCE_DIR}/src)
# The following folder will be included
include_directories("/usr/local/include/pcapplusplus")
#add_executable(networksniffer ${SOURCES})
add_executable(networksniffer ${PROJECT_SOURCE_DIR}/networksniffer.cpp)
target_link_libraries(${PROJECT_NAME} libCommon++.a libPacket++.a libPcap++.a)
最佳答案
Packet.h
不是 libPacket++.a
的一部分。
libPacket++.a
是库,Packet.h
是头文件。
CMake 无法知道两者相互关联,除非您告诉它。
我建议使用 find_package
来正确定位两者 ( https://cmake.org/cmake/help/v3.0/command/find_package.html )。
然后使用 target_include_directories
包含头文件的路径。
关于c++ - cmake 链接到静态库 - 你必须告诉 cmake 去哪里找吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48165990/