我正在使用 Homebrew 库在 x86_64 mac 上构建我的应用程序。
CMakeLists.txt 的一部分:
execute_process(
COMMAND brew --prefix
RESULT_VARIABLE CMD_ERROR
OUTPUT_VARIABLE HOMEBREW_PREFIX
OUTPUT_STRIP_TRAILING_WHITESPACE)
...
# Fix linking on 10.14+. See https://stackoverflow.com/questions/54068035
LINK_DIRECTORIES(${HOMEBREW_PREFIX}/lib)
LINK_DIRECTORIES(${HOMEBREW_PREFIX}/opt/python@3.9/Frameworks/Python.framework/Versions/3.9/lib/)
set(CPPFLAGS "-I${HOMEBREW_PREFIX}/opt/llvm/include -I${HOMEBREW_PREFIX}/include")
set(LDFLAGS "-L${HOMEBREW_PREFIX}/opt/llvm/lib -Wl,-rpath,${HOMEBREW_PREFIX}/opt/llvm/lib")
构建完美适用于 x86_64 和 ARM 平台。但我也希望通过 Rosetta 软件在 ARM 平台上构建 x86_64 版本。不幸的是,它在 Rosetta 中不起作用,抱怨homebrew
x86_64 brew 前缀中缺少库:
Reason: tried: '/usr/local/opt/fmt/lib/libfmt.8.dylib' (no such file)
尽管安装了所有依赖项:
$ brew list fmt
/opt/homebrew/Cellar/fmt/8.0.1/include/fmt/ (13 files)
/opt/homebrew/Cellar/fmt/8.0.1/lib/libfmt.8.0.1.dylib
/opt/homebrew/Cellar/fmt/8.0.1/lib/cmake/ (4 files)
/opt/homebrew/Cellar/fmt/8.0.1/lib/pkgconfig/fmt.pc
/opt/homebrew/Cellar/fmt/8.0.1/lib/ (3 other files)
如何制作 x86_64 二进制文件,这些二进制文件将通过 Rosetta 在 ARM 上接受?可以通过一些特殊的@rpath
设置来实现吗?