我经常遇到很多麻烦,无法让 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