Cmake - Find_package NO_DEFAULT_PATH无法正常工作?

时间:2017-05-16 12:32:10

标签: cmake

我试图将OpenCv包含在一个项目中,实际上我的计算机上有两次相同版本的lib。一个在/ good / path中编译了附加的所需函数(Cuda和OpenGl支持),并且在/ old / non / suitable / path中编译了一个没有所需函数的函数。

我在我的cmake中做到了这一点:

message(${OpenCV_LIBS})
message(${OpenCV_INCLUDE_DIRS})
message(${HINTS})
find_package( OpenCV 3.2.0 REQUIRED CONFIG PATHS "/good/path" NO_DEFAULT_PATH )
message(${OpenCV_INCLUDE_DIRS})

前3条消息报告错误,换句话说,变量为空。 最后一条消息写入" / old / non / suitable / path / include"

根据find package documentation,添加NO_DEFAULT_PATH选项后,我应该只检查显式PATHS和HINTS,但是当我检查它时,HINTS是空的。

有没有人知道为什么我找到了另一个旧库而不是/ good / path中的那个,再次应该是唯一的路径检查?

编辑:对于没有成功选择所需库的同一问题的人,一种解决方案是将旧库的LibConfig.cmake重命名为其他任何内容。这将迫使cmake找到最后一个库。 尽管如此,这非常糟糕,我不知道为什么NO_DEAULF_PATH无法正常工作。 我在这里等了几天以防有人看到答案,如果没有任何回复,我会直接在cmake网站上打开一个问题。

1 个答案:

答案 0 :(得分:0)

删除构建目录是一种方法。

否则,构建目录中的缓存路径将覆盖cmake中的路径修改。

Ps:答案在Tsyvarev评论中,我正在回答自己以结束问题。