【问题标题】:CMake is searching for packages in a strange locationCMake 正在一个奇怪的位置搜索包
【发布时间】:2018-11-21 12:34:49
【问题描述】:

我一直在试图追查为什么 CMake find_package 在我的构建中找到了错误的包。从CMake find_package: where did it find the package? 我学会了如何让它告诉我它正在搜索哪些路径,以及它在哪里找到了包。但是现在我需要弄清楚为什么 CMake 正在搜索某个路径,因为它出于某种原因在非默认位置进行搜索。我检查了变量

CMAKE_MODULE_PATH
CMAKE_PREFIX_PATH
CMAKE_INCLUDE_PATH
CMAKE_LIBRARY_PATH
CMAKE_PROGRAM_PATH

但它们是空的。变量

CMAKE_SYSTEM_PREFIX_PATH

是非空的,但它包含的只是

/usr/local;/usr;/;/usr;/tmp/pip-req-build-ckl98h8g/build/lib.linux-x86_64-3.6

所以这不是原因。

还有什么可以让 CMake 搜索一些奇怪的前缀?

具体问题如下:find_package(yaml-cpp)正在搜索如下:

  ...
  Checking prefix [/]
  Checking file [/yaml-cppConfig.cmake]
  Checking file [/yaml-cpp-config.cmake]
  Checking prefix [/usr/games/]
  Checking file [/usr/games/yaml-cppConfig.cmake]
  Checking file [/usr/games/yaml-cpp-config.cmake]
  Checking prefix [/usr/local/games/]
  Checking file [/usr/local/games/yaml-cppConfig.cmake]
  Checking file [/usr/local/games/yaml-cpp-config.cmake]
  Checking prefix [/snap/]
  Checking file [/snap/yaml-cppConfig.cmake]
  Checking file [/snap/yaml-cpp-config.cmake]
  Checking prefix [/home/farmer/repos/gambit/copy3/build/contrib/yaml-cpp-0.6.2/]
  Checking file [/home/farmer/repos/gambit/copy3/build/contrib/yaml-cpp-0.6.2/yaml-cppConfig.cmake]
  Checking file [/home/farmer/repos/gambit/copy3/build/contrib/yaml-cpp-0.6.2/yaml-cpp-config.cmake]

它会在最后一个路径中找到包配置文件。但那是一些其他代码的私有构建目录,所以我不知道为什么find_package 会在那里搜索。一定是某个地方的某个变量告诉它这样做,但我不知道是哪一个。我不想搜索这条路径。

【问题讨论】:

    标签: cmake cmake-modules


    【解决方案1】:

    好的,我认为答案是 CMake 遵循一个极其复杂的过程来搜索整个地方的包。就我而言,它似乎在

    下找到了一些东西
    ~/.cmake/packages/<package>
    

    然后它必须将它定向到我看到的奇怪前缀。删除此包注册表项可解决此问题。 CMake 遵循的完整搜索过程在 find_package 文档的末尾进行了描述:https://cmake.org/cmake/help/v3.0/command/find_package.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-19
      • 2022-01-10
      • 2016-12-11
      • 2019-10-04
      • 1970-01-01
      • 2019-05-26
      • 2012-01-16
      相关资源
      最近更新 更多