我最近更新到了 macOS Big Sur,现在使用 cmake 编译 C++ 代码库时遇到问题。
我已经解决了一些与 Xcode 配置相关的问题(请参阅我的问题此处 M1 MacBook Pro 和 cmake 的编译错误)。
我的新问题如下:当我运行
make
时,我得到以下输出:
CMake Error at /usr/local/Cellar/cmake/3.19.1/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:218 (message):
Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
Call Stack (most recent call first):
/usr/local/Cellar/cmake/3.19.1/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:577 (_FPHSA_FAILURE_MESSAGE)
/usr/local/Cellar/cmake/3.19.1/share/cmake/Modules/FindZLIB.cmake:115 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
CMakeLists.txt:53 (FIND_PACKAGE)
我已经尝试在 cmake gui 中设置 ZLIB_LIBRARY 和 ZLIB_INCLUDE_DIR 的值,但它仍然不起作用,我想我将它们设置为错误的东西。我到底应该在 macOS Big Sur 上哪里找到 zlib?ZLIB_LIBRARY 和 ZLIB_INCLUDE_DIR 需要指向哪些文件?
我最终设法通过修改我的 CMakeConfig.txt 文件来解决这个问题。有一条线
execute_process(COMMAND bash -c "xcodebuild -version -sdk | grep MacOSX | grep \"MacOSX10.1\\d.sdk\" | grep Path | head -n 1 | cut -f 2 -d ' '" OUTPUT_VARIABLE CMAKE_OSX_SYSROOT)
我替换为
execute_process(COMMAND xcrun --show-sdk-path OUTPUT_VARIABLE CMAKE_OSX_SYSROOT)
不确定为什么 MacOS sdk 版本会对 ZLIB 产生影响,但这解决了问题。
MacOS Big Sur 中似乎 usr/lib/ 的功能已更改。请参阅此处爱斯基摩人的帖子 - https://developer.apple.com/forums/thread/655588 了解背景故事以及库已移至何处。