CMake find_path include directory prefix
我正在为OpenNI写一个最小的Find * .cmake。 找到我写的头文件
1
| find_path(OPENNI_INCLUDE_PATH XnOS.h) |
可以按预期工作(OPENNI_INCLUDE_PATH的值为/ usr / include / ni)。
但是,在我的文件中,我必须包含标头
我如何摆脱ni前缀,所以我可以写
第一个include的问题是包含了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是否已经在您的include中,所以OPENNI_INCLUDE_PATH将是多余的。
-
尽管您可以始终设置(OPENNI_INCLUDE_PATH $ {OPENNI_INCLUDE_PATH}; $ {OPENNI_INCLUDE_PATH} / ..)
-
是的,ni在/ usr / include中。不幸的是,如果我将OPENNI_INCLUDE_PATH更改为/ usr / include,则不会更改任何内容。无论哪种情况,我都必须在文件中写入#include ,这将导致上述编译错误。
-
如果/ usr / include在您的include中,则" #include
-
导致编译错误,因为在文件XnOs.h中又是一个包含ni /前缀的include。然后,编译器抱怨找不到文件。
-
然后尝试包括两条路径,就像我在3年前所说的那样。
-
那不是解决方案。我得到同样的编译错误。
-
如果/ usr / include / ni和/ usr / include都在包含中,则不会出现错误。其他事情一定正在发生。
始终使用于find_path的路径与#include语句中的路径匹配。
如果要#include ,则应写
1
| find_path(OPENNI_INCLUDE_PATH ni/XnOS.h) |
相反,如果您想#include ,请使用
1
| find_path(OPENNI_INCLUDE_PATH XnOS.h) |
只需确保事先确定要使用哪个并坚持使用即可。 为同一库混合几个包含路径是确保不必要地使构建环境复杂化的肯定方法。
-
在我的cmake文件中,我有find_path(OPENNI_INCLUDE_PATH XnOS.h),并且我想在#include 中包含标头,但是这种方式行不通。
-
@Masala然后,您的CMake脚本中可能存在一个错误。 使用message验证find_path返回的值是否符合您的期望。 另外,请务必仔细检查您的目标是否确实将该值用作包含目录。
-
没错,错误是在主cmake文件中,而不是在find模块中。