-1

我正在使用 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 中不起作用,抱怨homebrewx86_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设置来实现吗?

4

0 回答 0