find_package PATH_SUFFIXES无法正常工作

时间:2018-10-06 02:14:22

标签: cmake

我正在尝试在顶级CMake文件中使用find_package。这是我的文件夹结构

│   CMakeLists.txt
│
├───build
│
├───include
│
├───lib
│   └───crossguid
│       ├───include
│       │   └───crossguid
│       │           guid.hpp
│       │
│       ├───lib
│       │       libcrossguid.a
│       │
│       └───share
│           └───crossguid
│               │   LICENSE
│               │   README.md
│               │
│               └───cmake
│                       crossguid-config-release.cmake
│                       crossguid-config.cmake
│
└───src  

我的方法是: find_package(crossguid REQUIRED CONFIG PATH_SUFFIXES lib/)。 根据{{​​3}},这应对应于:

  

<prefix> / <name>* /(lib/<arch> | lib* | share)/ <name>* /(cmake | CMake)/(W / U)

     

如果指定了PATH_SUFFIXES,则将后缀附加到每个(W)   或(U)目录条目。

所以我有<prefix>的“ lib /”,nameshare的交叉引导,name的交叉引导和cmake文件夹以及必要的配置文件。但是由于某些原因,CMake找不到它们:

  

CMakeLists.txt:26(find_package)上的CMake错误:找不到   包配置文件由“ crossguid”与任何   以下名称:

crossguidConfig.cmake
crossguid-config.cmake
     

将“ crossguid”的安装前缀添加到CMAKE_PREFIX_PATH或   将“ crossguid_DIR”设置为包含上述内容之一的目录   文件。如果“ crossguid”提供了单独的开发包或   SDK,请确保已安装。

此外,我尝试将路径后缀更改为lib / crossguid / share / crossguid / cmake,因此它对应于第一个 <prefix>/ (W),但仍然出现相同的错误。

我可以使用PATHS或crossguid_DIR来解决此问题,但是对于我来说,这个问题仍然是个谜。

0 个答案:

没有答案