我正在尝试在顶级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 /”,name
,share
的交叉引导,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来解决此问题,但是对于我来说,这个问题仍然是个谜。