CMake find_library:为什么在默认路径之后搜索PATHS中的路径?

时间:2018-10-10 18:02:56

标签: cmake

CMake文件似乎很清楚:除非指定了NO_DEFAULT_PATH,否则cmake会首先搜索一堆默认路径,如果找不到该库,则只有才会在目录中查找在PATHS中列出。存在一些其他NO_*,仅排除 some 个cmake默认路径。

我知道如何克服这种行为。例如,我可以执行建议的here,即进行两次搜索:第一次进行NO_DEFAULT_PATH,第二次不进行搜索。如果第一个成功,则第二个将被跳过。赢。

但是,这个问题不是关于如何实现我想要的东西(我知道该技巧)。问题是为什么?为什么cmake不在提供的路径中优先显示?在我看来,先使用这些提示是合乎逻辑的:如果用户指定了一些提示,也许我应该先使用那些提示,如果它们不起作用,则使用默认值...

在当前的实现中是否缺少我的充分理由?我会这样假设,我怀疑cmake的人们会无缘无故地做事...

编辑:当我说“用户正在指定一些提示”时,我并不是指HINTS的实际find_library参数。它更像是泛型的“提示”。但是,正如注释中所建议的,HINTS实际上在系统路径之前被扫描。我的担心来自cmake的文档:

  

搜索“提示”选项指定的路径。这些应该是路径   由系统自省计算,例如   已经找到另一个项目的位置。硬编码的猜测应该是   使用PATHS选项指定。

HINTS并非旨在接收硬编码的完整路径这一事实,使我觉得将来可能会触发,因此我不确定这是否是解决方案。但是也许是吗?

0 个答案:

没有答案