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

时间:2014-11-19 17:08:24

标签: c++ ubuntu makefile cmake

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

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

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

1 个答案:

答案 0 :(得分:2)

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