CMake 找不到已安装的软件包

CMake 找不到已安装的软件包

我经常遇到很多麻烦,无法让 CMake 接受我确实安装了一些包,这是因为我不知道应该向 CMake 提供什么信息和/或如何做到这一点。

例如我已经通过 安装了 libnest2d apt install libnlopt-dev

然而,当我从 pynest2d 运行 CMake 时,它​​仍然抱怨找不到它:

CMake Error at /usr/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:146 (message):
  NLopt library cannot be found.  Consider set NLopt_PATH environment
  variable (missing: NLopt_INCLUDE_DIRS)
Call Stack (most recent call first):
  /usr/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:393 (_FPHSA_FAILURE_MESSAGE)
  cmake/FindNLopt.cmake:63 (find_package_handle_standard_args)
  CMakeLists.txt:15 (find_package)

我在编译和安装时经常遇到这种情况,但我真的不知道它想让我做什么。我曾尝试自己定位库,但最后总是得到大量可能的目录,而且即使我设法找到正确的目录,我也不知道该如何处理这些目录。

CMake 具体寻找什么文件?

我如何告诉 CMake(最好通过 cmake-gui)查看我知道这些文件所在的目录?

以下是可以提供给 CMake 的所有目录。

$ locate libnlopt-dev
/usr/share/doc/libnlopt-dev
/var/lib/dpkg/info/libnlopt-dev:amd64.list
/var/lib/dpkg/info/libnlopt-dev:amd64.md5sums

$ dpkg -L libnlopt-dev
/.
/usr
/usr/include
/usr/include/nlopt.f
/usr/include/nlopt.h
/usr/lib
/usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu/cmake
/usr/lib/x86_64-linux-gnu/cmake/nlopt
/usr/lib/x86_64-linux-gnu/cmake/nlopt/NLoptConfig.cmake
/usr/lib/x86_64-linux-gnu/cmake/nlopt/NLoptConfigVersion.cmake
/usr/lib/x86_64-linux-gnu/cmake/nlopt/NLoptLibraryDepends-none.cmake
/usr/lib/x86_64-linux-gnu/cmake/nlopt/NLoptLibraryDepends.cmake
/usr/lib/x86_64-linux-gnu/pkgconfig
/usr/lib/x86_64-linux-gnu/pkgconfig/nlopt.pc
/usr/share
/usr/share/doc
/usr/share/man
/usr/share/man/man3
/usr/share/man/man3/nlopt.3.gz
/usr/share/man/man3/nlopt_minimize.3.gz
/usr/share/man/man3/nlopt_minimize_constrained.3.gz
/usr/lib/x86_64-linux-gnu/libnlopt.so
/usr/share/doc/libnlopt-dev

我目前在 WSL2 上使用 XFCE4。

答案1

在文件 pynest2d/cmake/FindNLopt.cmake 中的调用 find_path(NLopt_INCLUDE_DIRS ..) 中,您可能需要将文件名从 nlopt.hpp 修改为 nlopt.h

相关内容