CMake find_path包含目录前缀

Mas*_*ala 6 c++ cmake openni

我正在为OpenNI编写一个最小的Find*.cmake.找到我写的头文件

find_path(OPENNI_INCLUDE_PATH XnOS.h)
Run Code Online (Sandbox Code Playgroud)

它按预期工作(OPENNI_INCLUDE_PATH的值为/ usr/include/ni).但是,在我的文件中,我必须包含标题

#include <ni/XnOS.h>
Run Code Online (Sandbox Code Playgroud)

我怎样才能摆脱ni前缀,所以我可以写

#include <XnOS.h>
Run Code Online (Sandbox Code Playgroud)

第一个包含的问题是包含XnCppWrapper.h并且该文件再次包含一些Xn*.h头,但没有ni前缀.这会导致编译器错误.

Com*_*sMS 9

始终使用您用于find_path匹配#include语句中的路径的路径.

如果你想,#include <ni/XnOS.h>你应该写

find_path(OPENNI_INCLUDE_PATH ni/XnOS.h)
Run Code Online (Sandbox Code Playgroud)

如果您想要#include <XnOS.h>,请使用

find_path(OPENNI_INCLUDE_PATH XnOS.h)
Run Code Online (Sandbox Code Playgroud)

一定要事先决定你想要使用哪一个并坚持下去.混合使用同一个库的几个包含路径是一种可靠的方法,可以不必要地使构建环境过于复杂.