如何在MacOS CommandLine Tools中将ZLIB从1.2.11升级到1.2.13适配CMake
解决CMake找不到符合版本要求的ZLIB问题(macOS Monterey 12.6.3)
方案1:强制CMake指向Homebrew安装的ZLIB
Homebrew安装的ZLIB默认路径分两种:Intel Mac为/usr/local/opt/zlib,Apple Silicon Mac为/opt/homebrew/opt/zlib。可以通过CMake参数直接指定该路径,绕过系统CLT的旧版本:
- 先确认路径存在:
# Intel Mac ls /usr/local/opt/zlib # Apple Silicon Mac ls /opt/homebrew/opt/zlib - 带参数执行CMake:
# Intel Mac cmake -DGeant4_DIR=~/.anaconda3/pkgs/geant4-11.0.3-py311h69de116_0/share/Geant4-11.0.3/ -DZLIB_ROOT=/usr/local/opt/zlib $HOME/B1/ # Apple Silicon Mac cmake -DGeant4_DIR=~/.anaconda3/pkgs/geant4-11.0.3-py311h69de116_0/share/Geant4-11.0.3/ -DZLIB_ROOT=/opt/homebrew/opt/zlib $HOME/B1/
方案2:通过环境变量让CMake优先搜索高版本ZLIB
设置环境变量,让CMake在查找依赖时优先读取Homebrew的ZLIB:
# Intel Mac export CMAKE_PREFIX_PATH="/usr/local/opt/zlib:$CMAKE_PREFIX_PATH" # Apple Silicon Mac export CMAKE_PREFIX_PATH="/opt/homebrew/opt/zlib:$CMAKE_PREFIX_PATH" # 执行CMake命令 cmake -DGeant4_DIR=~/.anaconda3/pkgs/geant4-11.0.3-py311h69de116_0/share/Geant4-11.0.3/ $HOME/B1/
若想永久生效,将上述export命令添加到~/.zshrc文件,执行source ~/.zshrc即可。
方案3:使用Conda环境内置的ZLIB
既然Geant4通过Conda安装,可直接利用Conda环境内的ZLIB(版本通常满足要求):
- 激活Geant4的Conda环境:
conda activate geant4_env - 执行CMake(此时CMake会自动优先搜索Conda环境内的依赖库):
注意:此处Geant4_DIR需指向激活环境内的路径,而非pkgs目录下的文件,避免环境依赖不一致。cmake -DGeant4_DIR=~/.anaconda3/envs/geant4_env/lib/Geant4-11.0.3/ $HOME/B1/
重要提示
直接修改或替换CLT中的ZLIB文件会破坏系统编译工具的依赖链,可能导致Xcode、clang等工具异常,绝对不推荐。上述方案均无需改动系统文件,属于安全可靠的兼容方式。
内容的提问来源于stack exchange,提问作者Alexander Yelland
相关产品推荐
相关产品推荐

