在许多教程中,我看到sdl-config
编译了一个sdl c程序。在c ++示例中,我也看到了。
以下是here的示例。
g++ sdlExample.cpp `sdl-config --cflags --libs` -o sdlExample
sdl-config --cflags --libs
是什么意思?为什么内部重音?
答案 0 :(得分:2)
在执行命令的shell中,反向引号意味着命令替换。因此,基本上,反向引号内的任何内容都作为命令执行,并且其输出被替换。
示例:
echo Today is `date`
首先执行date
命令,并替换它的输出。
echo Today is Sat Dec 19 14:32:13 EST 2015
然后执行以生成:
Today is Sat Dec 19 14:32:13 EST 2015
所以,在你的命令中,
g++ sdlExample.cpp `sdl-config --cflags --libs` -o sdlExample
shell将首先执行,
sdl-config --cflags --libs
并替换其输出,
g++ sdlExample.cpp <output of the above command> -o sdlExample
然后最终执行生成的命令行。
要查看命令替换后实际执行的内容,只需在前面添加echo
。
echo g++ sdlExample.cpp `sdl-config --cflags --libs` -o sdlExample
这将显示生成的命令行。
请注意,命令替换还有一种替代语法,当您有复杂的嵌套替换时,这种语法是首选。
echo g++ sdlExample.cpp $(sdl-config --cflags --libs) -o sdlExample
这是一种非常标准的技术,可以为库/框架生成适当的命令行选项,其中选项取决于安装等。在这种情况下,sdl-config
命令会生成必要的编译器选项({{1} } {和cflags
)用于libs
包。您可以通过直接在命令行上执行它来试验它可以做的其他事情。
sdl
答案 1 :(得分:1)
它只输出适当的标志传递给编译器,类似于pkg-config对其.pc文件的作用(位于/ usr / lib / pkgconfig中)。