1

我在 Fedora 19 上使用fish shell。我试图编译这个简单的 gtkmm 示例。

当我尝试在fish中使用以下命令编译它时:

g++ sample.cc -o sample `pkg-config gtkmm-3.0 --cflags --libs`

它显示以下错误:

g++: error: `pkg-config: No such file or directory
g++: error: gtkmm-3.0: No such file or directory
g++: error: unrecognized command line option ‘--cflags’
g++: error: unrecognized command line option ‘--libs`’

然而,当我将bash用于同一件事时,它可以正确编译。这意味着 pkg-config 确实获取了正确的标志。

我最近开始使用,所以我不知道那里出了什么问题。有人可以帮我吗?

另外,这是我关于stackoverflow的第一个问题。大家好。

谢谢你。

4

2 回答 2

3

Fish shell( )用于命令替换,而不是 Bash 使用的反引号。请参阅:鱼教程。这就是为什么它对您不起作用的原因,它不太可能是您的 PATH 的问题。

我不太明白为什么,但由于某种原因,如果你只是用括号替换反引号,你会遇到另一个错误(...从哪里输出pkg-config):

g++: error: unrecognized command line option '... '

你可以通过使用 fish 命令来解决这个问题eval。所以:

eval g++ sample.cc -o sample (pkg-config gtkmm-3.0 --cflags --libs)

应该工作。

于 2014-12-03T16:51:44.087 回答
1

跟踪此行为存在问题: https ://github.com/fish-shell/fish-shell/issues/982

基本上,问题在于 fish 假设参数由换行符分隔,而 pkg-config 输出空格,可以在这里看到:

$ echo "'"(pkg-config --cflags eigen3)"'"
'-I/usr/include/eigen3 '
于 2015-09-20T15:45:22.270 回答