PKG_CONFIG_PATH 中的自制软件包

adr*_*usi 11 homebrew macos

我有一堆用自制软件安装的库,但我不知道在 pkg-config 的搜索路径中获取它们的正确方法是什么。现在我有

export PKG_CONFIG_PATH=$(find /usr/local/Cellar -name 'pkgconfig' -type d | grep lib/pkgconfig | tr '\n' ':' | sed s/.$//)
Run Code Online (Sandbox Code Playgroud)

这工作正常,但它确实减慢了我的 shell 启动时间,现在大约需要 2 秒。我确信自制软件内置了更好的方法,但我在文档中找不到它。

l -*_*c l 12

将 转换为find以冒号:分隔的静态列表PKG_CONFIG_PATH 列表以减少启动时间。

步骤 1. 运行pkg-config --list-all以确定哪些包已经被

pkg-config --list-all

# tidy         tidy - tidy - HTML syntax checker
# tesseract    tesseract - An OCR Engine
# …    
Run Code Online (Sandbox Code Playgroud)

步骤 2. 运行find以确定pkgconfig包含 *.pc 文件的目录。

# long form `find`
find /usr/local/Cellar -name 'pkgconfig' -type d | grep lib/pkgconfig | tr '\n' ':' | sed s/.$//

# short form `find`
find / -name "pkgconfig" -print

# /usr/local/Cellar/abc/0.1.5/lib/pkgconfig:…/usr/local/Cellar/xyz/2.6/lib/pkgconfig
Run Code Online (Sandbox Code Playgroud)

第3步:添加感兴趣的路径库,那些尚未被发现pkg-config,到PKG_CONFIG_PATH。

选项:使用/usr/local/Cellar/…需要随每次版本号更改而更新的路径。

export PKG_CONFIG_PATH=/usr/local/Cellar/abc/0.1.5/lib/pkgconfig
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/Cellar/abc/0.1.5/lib/pkgconfig
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/my/build/from/source/mmmm/0.1.5/lib/pkgconfig
Run Code Online (Sandbox Code Playgroud)

选项:当 Cellar 链接(典型)时,/usr/local/opt/…可以找到并使用与版本无关的路径。

sudo find / -name "uvw" -print
# /usr/local/Cellar/uvw
# /usr/local/opt/uvw
ls -l /usr/local/opt/uvw
# /usr/local/opt/uvw@ -> ../Cellar/uvw/4.2_1
Run Code Online (Sandbox Code Playgroud)

设置这些:

export PKG_CONFIG_PATH=/usr/local/opt/uvw/share/pkgconfig
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opt/xyz/lib/pkgconfig
Run Code Online (Sandbox Code Playgroud)