首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cmake链接到静态库--你必须告诉cmake去哪里找吗?

cmake链接到静态库--你必须告诉cmake去哪里找吗?
EN

Stack Overflow用户
提问于 2018-01-09 18:20:50
回答 3查看 1.4K关注 0票数 3

我已经在我的linux机器上安装了c++库pcapplusplus,并且.a文件已经放在/usr/local/lib中。我现在正在尝试使用target_link_libraries(${PROJECT_NAME} libCommon++.a libPacket++.a libPcap++.a)将我的项目与cmake中的项目链接起来。但是,它找不到属于libPacket++.aPacket.h。我在这里做错了什么?我必须告诉cmake去哪里找吗?

代码语言:javascript
复制
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)
EN

回答 3

Stack Overflow用户

发布于 2018-01-09 18:28:56

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包括头文件的路径。

票数 6
EN

Stack Overflow用户

发布于 2018-01-09 18:27:23

您需要添加头文件搜索目录路径,编译器可以在其中查找头文件,在您的情况下为Packet.h

您可以尝试使用命令locate Packet.h来查找系统上的路径。然后,您可以使用include_directories()函数添加该路径。也就是说,如果你在/usr/local/include/中找到了Packet.h,那么你应该像下面这样更新。

代码语言:javascript
复制
include_directories("${PROJECT_SOURCE_DIR}"/include "/usr/local/include/")
票数 1
EN

Stack Overflow用户

发布于 2018-01-09 18:29:28

错误是因为它找不到头文件。我看到你没有提到任何包含文件夹。Packet.h文件必须位于/usr/local/include中。您可以将其包括在内。或者您可以添加类似下面的内容

代码语言:javascript
复制
find_package(pcapplusplus REQUIRED)
include_directories(${PCAPPLUSPLUS_INCLUDE_DIRS})

自己处理varible名字。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48165990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档