我正在尝试在 XCode 项目中使用 GMP 和 MPFR。我安装了Homebrew,然后用
brew install gmp
和brew install mpfr
安装库,似乎成功了。但是,当我#include <gmp.h>
时,它说找不到文件。我看到一个类似的问题here,它建议我需要告诉编译器在哪里可以找到它,但我不知道该怎么做,而且没有太多细节。
编辑:我在 M1 Mac 上。
使用 homebrew 时,intel mac 的默认行为是将 homebrew 安装到
/usr/local
中。这意味着该环境中的标头位于/usr/local/include
.
编译器的默认搜索路径集包括这个目录,所以如果你在 intel macs 上安装自制软件,它会自动在那个位置找到合适的头文件。它还将针对/usr/local/lib
中的软件
link,所以它真的很方便——自制软件往往只是在这个环境中构建和链接。
在 silicon macs (m1/m2) 上,默认行为发生变化。当您安装 native 包时,它们将安装到
/opt/homebrew
.
头目录为
/opt/homebrew/include
,库目录为/opt/homebrew/lib
。不幸的是,这两个文件夹都不会成为默认构建路径的一部分,这将导致编译和链接失败。
为了将标头文件夹添加到构建设置中,您需要转到目标的
build settings
。
在
header search paths
添加标题文件夹/opt/homebrew/include
.
在
library search paths
中,添加库文件夹/opt/homebrew/lib
如果您使用的是 Makefile,相应的项目将是:
-I/opt/homebrew/include
和 -L/opt/homebrew/lib
如果您使用的是 cmake,则需要设置的相应变量为:
include_directories(/opt/homebrew/include)
和 link_directories(/opt/homebrew/lib)
.
最后……
如果您使用的是自制软件的 rosetta2 版本(这些将是在硅 mac 上运行的英特尔二进制文件),那么这些版本将安装到
/usr/local
中,并将构建;只要您正在为英特尔构建二进制文件。这是一个不小的情况。在这个环境中,有 lot 事情最终变得更加棘手 - 远远超出了这个答案。