关于c ++:CMake find_path包含目录前缀

CMake find_path include directory prefix

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

1
find_path(OPENNI_INCLUDE_PATH XnOS.h)

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

1
#include <ni/XnOS.h>

我如何摆脱ni前缀,所以我可以写

1
#include <XnOS.h>

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


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

如果要#include ,则应写

1
find_path(OPENNI_INCLUDE_PATH ni/XnOS.h)

相反,如果您想#include ,请使用

1
find_path(OPENNI_INCLUDE_PATH XnOS.h)

只需确保事先确定要使用哪个并坚持使用即可。 为同一库混合几个包含路径是确保不必要地使构建环境复杂化的肯定方法。