Fish 中使用 pkg-config 命令替换

use*_*107 3 shell fish command-substitution pkg-config

Fish 的命令替换应该与 Bash 的命令等效$(),但这个简单的示例失败了:

g++ -std=c++14 -Wall -Wextra -pedantic -g (pkg-config --cflags sdl2) \
    test.cpp (pkg-config --libs sdl2)
/usr/bin/ld: cannot find -lSDL2
Run Code Online (Sandbox Code Playgroud)

如果我在 Bash 中运行它,它工作得很好。也可以用打字-lSDL2代替使用pkg-config

澄清一下,没有什么问题pkg-config

echo (pkg-config --libs sdl2)
-lSDL2
Run Code Online (Sandbox Code Playgroud)

为什么这对 Fish 不起作用?

use*_*107 5

这是 Fish #982中的一个已知问题。显然他们希望您使用eval或解析输出以将空格转换为换行符:

eval g++ -o code code.cc (pkg-config opencv --cflags --libs)
g++ -o code code.cc (pkg-config opencv --cflags --libs | perl -pe 's/\s+/\n/g')
Run Code Online (Sandbox Code Playgroud)