gpt4 book ai didi

c++ - 我的项目找不到一个库头,但找不到另一个

转载 作者:行者123 更新时间:2023-11-28 02:05:47 26 4
gpt4 key购买 nike

我有两个 C++ 库,我在 Ubuntu 上使用它们。其中之一,我们称之为foo ,我通过 apt-get 安装,例如sudo apt-get install libfoo-dev .另一个,我们称之为bar , 我通过下载源文件并运行 make install 安装.这些安装之后,我就有了来自 foo 的头文件。在诸如 /usr/include/foo/foo.h 的位置,以及来自 bar 的头文件在诸如 /usr/local/include/bar/bar.h 的位置.据我所知,foobar 的依赖项.

然后我创建了自己的 C++ 项目,并包含了行 #include "bar/bar.h" .但是在编译我的项目时,我收到一条错误消息 error: foo.h: No such file or directory .如果我单击调试器中的错误,它会打开文件 bar.h , 并突出显示行 #include <foo.h> .所以,我的项目能够找到 bar.h , 但不是 foo.h .我也没有提到 foobar在我的 CMakeLists.txt文件。

所以我的问题是:

  1. 我的项目如何知道如何找到 bar.h , 当我没有告诉它在CMakeLists.txt 中找到它的位置时?

  2. 我需要做什么才能找到我的项目 foo.h并正确编译?

谢谢!


编辑:这是我的 CMakeLists.txt文件(这里没有提到 foobar 库):

cmake_minimum_required(VERSION 2.8.1)

set(CMAKE_CXX_FLAGS "-std=c++11 -O3")

project(Grasping_Simulator)

find_package(OpenGL REQUIRED)
find_package(GLEW REQUIRED)
find_package(GLUT REQUIRED)
find_package(Eigen3 REQUIRED)
find_package(Boost REQUIRED)
find_package(OpenCV REQUIRED)

include_directories(${OPENGL_INCLUDE_DIR} ${GLEW_INCLUDE_DIR} ${GLUT_INCLUDE_DIR} ${EIGEN3_INCLUDE_DIR} ${BOOST_INCLUDE_DIRS} ${OPENCV_INCLUDE_DIRS})

file(GLOB SRCS *.cpp *.h)

add_executable(${PROJECT_NAME} ${SRCS})

target_link_libraries(${PROJECT_NAME} ${GLEW_LIBRARY} ${GLUT_LIBRARY} ${OpenCV_LIBS} pthread GL boost_system)

最佳答案

您需要添加选项 -I/usr/include/foo/到你的编译命令。

默认情况下,位置如 /usr/include//usr/local/include已经在包含搜索路径中。然而,你的图书馆bar使用 #include <foo.h> 做一些调皮的事.真的,它应该使用像 #include <foo/foo.h> 这样的东西(顺便说一句,如果您可以进行此更改,那将更干净)。这将允许编译器搜索其所有包含路径,包括路径 /usr/include/ , 然后尝试附加 /foo/foo.h - 这会成功。就目前而言,默认包含路径中没有任何内容可以仅通过附加 /foo.h 来工作。 , 所以找不到它。

编辑:鉴于上面的 CMake 代码,您很可能需要附加一个包含值 /usr/include/foo 的变量。到 include_directories行以达到预期效果(这是在编译行中包含 -I/usr/include/foo/)。

关于c++ - 我的项目找不到一个库头,但找不到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37591513/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com