我正在为 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 header ,但没有 ni 前缀。这会导致编译器错误。
最佳答案
总是有您用于 find_path
的路径匹配您的 #include
中的那个声明。
如果你想#include <ni/XnOS.h>
你应该写
find_path(OPENNI_INCLUDE_PATH ni/XnOS.h)
如果你想 #include <XnOS.h>
, 使用
find_path(OPENNI_INCLUDE_PATH XnOS.h)
一定要事先决定好要使用哪一个并坚持。为同一个库混合多个包含路径肯定会使构建环境不必要地过于复杂。
关于c++ - CMake find_path 包含目录前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22558419/