c++ - 如何在usr/include/linux中搜索头文件

标签 c++ ubuntu makefile cmake

我正在 Ubuntu 中使用 cmake 编写一个 C++ 程序,它使用头文件 joystick.h/usr/include/linux .默认情况下,似乎没有 make可以找到joystick.h在默认目录中,如果我使用 #include <joystick.h> .因此,我添加了行 include_directories (/usr/include/linux)CMakeLists.txt以启用此 header 。

问题是,我现在遇到各种错误,例如 error: redefinition of ‘struct timeval’error: redefinition of ‘struct timezone’ .这似乎是因为有一个标题 time.h在两个/user/include/usr/include/linux .这些文件中的 header 保护是 #ifndef _TIME_H#ifndef _LINUX_TIME_H分别。因此,我能想到的唯一解决方案是将路径硬编码到joystick.h。在我的源代码中。

因此,在我看来/usr/include/linux由于这些重新定义问题,永远不应将其添加到搜索路径中。它是否正确?我对路径进行硬编码的解决方案是最好的解决方案吗?

最佳答案

除非有理由不这样做(而且我想可能有),否则似乎只使用 #include <linux/joystick.h>在源文件中将是这里最简单的解决方案。

关于c++ - 如何在usr/include/linux中搜索头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27022774/

相关文章:

c++ - GCC 导致 lambda 捕获的参数包的段错误

c++ - 引入 lambda 后,类内部函数是否有任何用例?

javascript - ubunu 中的 Angular CLI 安装错误 - 当我尝试在我的 ubuntu 机器中运行 angular CLI 命令时出现错误

c++ - 如何创建库?

linux - 使用 Android.bp 为 GNU/Linux 系统构建项目

c++ - 尝试使用 boost::serialization 和 arcive 反序列化对象时得到 "input stream error"

c++ - 如何为我的 Vulkan 类创建这个通用数据结构字段?

php - XDebug 探查器不在 apache 中写入文件

linux - 我可以在 Linux Mint 13 上运行 docker 吗?

makefile - Makefiles是如何重新制作的——看不懂官方文档