添加头文件的 CMake 构建错误 - 致命错误:找不到文件

2024-01-20

我在 Ubuntu 14.04 中使用 CMake 构建 C++ 源文件。

我有一个主要源文件。这包括一个头文件,其中包含另一个源文件中的函数。

我的主要源文件是 DisplayImage.cpp,头文件是 Camera.h,其中包含源文件 Camera.cpp。

每个文件都位于一个文件夹中。我有一个 CmakeLists.txt:

cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
find_package( OpenCV REQUIRED )
add_executable( DisplayImage DisplayImage.cpp Camera.cpp )
target_link_libraries( DisplayImage  ${OpenCV_LIBS} )

当我执行命令时cmake .在终端中,配置成功。之后,我执行命令make,我得到一个致命错误:

fatal error: Camera.h: No such file or directory

请帮我。我的CmakeLists.txt错误吗?


你应该使用target_include_directories() https://cmake.org/cmake/help/latest/command/target_include_directories.html告诉 CMake 关联特定的包含目录包含您的标头DisplayImage目标。假设你的Camera.h文件与以下目录位于同一目录中Camera.cpp, 您可以使用CMAKE_CURRENT_SOURCE_DIR https://cmake.org/cmake/help/latest/variable/CMAKE_CURRENT_SOURCE_DIR.html来指定这个目录。您还应该添加${OpenCV_INCLUDE_DIRS}这里,如《Using OpenCV with CMake》所示tutorial https://docs.opencv.org/master/db/df5/tutorial_linux_gcc_cmake.html.

cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
find_package( OpenCV REQUIRED )
add_executable( DisplayImage DisplayImage.cpp Camera.cpp )
target_include_directories(DisplayImage PRIVATE 
    ${CMAKE_CURRENT_SOURCE_DIR} 
    ${OpenCV_INCLUDE_DIRS}
)
target_link_libraries( DisplayImage PRIVATE ${OpenCV_LIBS} )

注意:这是一个很好的 CMake 实践always指定范围参数(例如PUBLIC, PRIVATE, or INTERFACE) 在里面target_*命令。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

添加头文件的 CMake 构建错误 - 致命错误:找不到文件 的相关文章

随机推荐

  • 将项目拖到父级之外并进入 UI 对话框

    我有一个 li class draggable 和一个 div class dropable 位于 ui 对话框 div 内 当我尝试拖动 li 时 我无法将其拖动到它的父元素之外 所以我这样做了 draggable draggable c
  • 当存在日期类型列时,查找字符串“NA”并将其替换为 NA

    我想搜索所有列 NA 并替换为NA但当存在日期列时会遇到问题 library lubridate x data frame a c NA NA b c today today x x NA NA 返回错误 Error in charToDa
  • Hibernate命名策略

    我正在使用 Spring Boot 构建 REST Web 服务 并尝试使用 hibernate 作为 orm 映射器 而无需任何 xml 配置 我基本上可以正常工作 但我遇到了配置问题 我实例化LocalContainerEntityMa
  • 请解释一下Android build.gradle groovy语法

    以下 groovy 语法的真正含义是什么 Gradle 文档介绍了 build gradle 的用法just时髦的 Android 团队已将默认的 build gradle 简化到它看起来不像代码 至少对我而言 请用常规语法解释一下这是做什
  • 使用javascript更改asp.net“ControlParameter”控件的属性“DefaultValue”

    我已经知道如何执行此操作 但我意识到控件 ControlParameter 没有 Id 属性 JS 需要该属性 是否有其他方法可以使用 JavaScript 更改 DefaultValue 属性而不需要使用 Id 属性 这是我一直在使用的
  • 消除 QWebChannel 属性通知器信号警告

    我在用着QWebEngineView with QWebChannel 类似于 class AppView QWebEngineView def init self QWebEngineView init self self ch QWeb
  • 使用 Intellij 指定工件名称

    我想设置使用 Intellij 构建的 jar 工件的文件名 但当我更改它时 它在输出文件中不会更改 使用 2017 2 5 我可以使用以下步骤更改工件名称 文件 gt 项目结构 在项目设置 gt 工件下 添加新的工件或修改现有的工件 在
  • hadoop 流:在 EMR 上导入模块

    上一个问题已解决 https stackoverflow com questions 6811549 how can i include a python package with hadoop streaming job 6811775
  • iOS 8 swift 社交框架

    我一直在编写一个应用程序 需要使用社交框架通过 Twitter 和 Facebook 共享文本 我让它工作 但它没有关闭 然后我想起了完成处理程序 但无论我做什么 这个处理程序都会继续给我错误 var okFacebook Bool SLC
  • 在react中读取firestore子集合数据 - 如何在子集合where查询中设置父id

    我正在尝试弄清楚如何从 React 中读取 firestore 子集合数据 我见过这个博客 https dev to rossanodan how to fetch subcollections from cloud firestore w
  • JQuery 添加隐藏的 HTML 元素

    HTML
  • GTK+ 设置字体大小

    As before https stackoverflow com questions 41072683 gtk menuitem size small 菜单项对于我的用例来说太小了 因此 我的问题是 如何增加文本 保存 加载 和 退出 的
  • 选择像素的 4 个邻居[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何选择像素的 4 个邻居matla
  • 如何获取更改前的属性值? (在 QML 中)

    我想了解以下问题 如何在声明式中存储属性的先前值 QML语言 任务是在属性值更改之前将其记住为另一个属性 问题在于现有的信号机制onPropertyNameChanged 该机制在修改后发出有关属性更改的信号 并且在这个处理程序中 不可能获
  • 如何从 java fx 应用程序打开默认系统浏览器?

    我正在尝试从 javafx 在默认系统浏览器中打开一个 web url 我没有找到任何关于此的官方文档 有什么线索吗 编辑 我发现了教程 http blog ngopal com np 2011 02 09 open default bro
  • MySQL DROP 所有表,忽略外键

    有没有一种简单的方法可以从 MySQL 数据库中删除所有表 忽略其中可能存在的任何外键约束 我发现生成的 drop 语句集很有用 并建议进行以下调整 将生成的 drop 限制到您的数据库 如下所示 SELECT concat DROP TA
  • SQL:标记哪个 WHERE 条件匹配

    这是一个理论问题 我想知道是否有一个好的方法来找出 WHERE 语句中的哪个条件匹配 假设我有一个这样的查询 SELECT FROM table WHERE COND1 OR COND2 AND COND3 OR COND4 有什么方法可以
  • pytest:如何创建专用测试目录

    我想要以下项目结构 folder tests project 我们来写一个简单的例子 test pytest tests test sum py t pytest sum py init py 总和 py def my sum a b re
  • JComboBox设置标签和值

    是否可以为a设置一个值和一个标签JComboBox所以我可以显示标签但获得不同的值 例如在 JavaScript 中我可以这样做 document getElementById myselect options 0 value access
  • 添加头文件的 CMake 构建错误 - 致命错误:找不到文件

    我在 Ubuntu 14 04 中使用 CMake 构建 C 源文件 我有一个主要源文件 这包括一个头文件 其中包含另一个源文件中的函数 我的主要源文件是 DisplayImage cpp 头文件是 Camera h 其中包含源文件 Cam