【发布时间】:2014-04-28 19:12:25
【问题描述】:
我正在为 OpenNI 编写一个最小的 Find*.cmake。找到我写的头文件
find_path(OPENNI_INCLUDE_PATH XnOS.h)
按预期工作(OPENNI_INCLUDE_PATH 的值为 /usr/include/ni)。 但是,在我的文件中,我必须包含标题
#include <ni/XnOS.h>
如何去掉 ni 前缀,这样我就可以写了
#include <XnOS.h>
第一个包含的问题是 XnCppWrapper.h 被包含在内,并且该文件再次包含一些 Xn*.h 标头,但没有 ni 前缀。这会导致编译器错误。
【问题讨论】:
-
所有文件都是第一种形式吗?我的意思是您可以将 OPENNI_INCLUDE_PATH 变量调整为 find_path() 返回的内容的父级,然后改用它。
-
我想,我不明白你的建议。你的意思是我应该从 /usr/include/ni 中绑定 ni 吗?这并不能解决包含问题。
-
我的意思是如果 ni 在 /usr/include 中,那么 OPENNI_INCLUDE_PATH 应该是 /usr/include 而不是 /usr/include/ni。这样,您不需要生成一些脚本过程来更改您的 c++ 源文件和头文件,以查找包含以删除路径。虽然我确实知道是否是这种情况 /usr/include 已经包含在您的包含中,因此 OPENNI_INCLUDE_PATH 将是多余的。
-
虽然你总是可以设置(OPENNI_INCLUDE_PATH ${OPENNI_INCLUDE_PATH};${OPENNI_INCLUDE_PATH}/..)
-
你是对的,ni在/usr/include中。不幸的是,如果我将 OPENNI_INCLUDE_PATH 更改为 /usr/include,它不会改变任何事情。无论哪种情况,我都必须在我的文件中编写#include
,这会导致上述编译错误。