Vin*_*uda 6 c c++ gcc sdl compilation
在许多教程中我看到sdl-config编译 sdl c 程序。在c++的例子中我也见过。这是来自此处的示例。
g++ sdlExample.cpp `sdl-config --cflags --libs` -o sdlExample
Run Code Online (Sandbox Code Playgroud)
是什么sdl-config --cflags --libs意思?为什么里面有口音?
在执行命令的 shell 中,反引号意味着命令替换。因此,基本上,反引号内的任何内容都将作为命令执行,并且其输出将被替换。
例子:
echo Today is `date`
Run Code Online (Sandbox Code Playgroud)
将首先执行该date命令,并替换它的输出。
echo Today is Sat Dec 19 14:32:13 EST 2015
Run Code Online (Sandbox Code Playgroud)
然后执行以产生:
Today is Sat Dec 19 14:32:13 EST 2015
Run Code Online (Sandbox Code Playgroud)
所以,在你的命令下,
g++ sdlExample.cpp `sdl-config --cflags --libs` -o sdlExample
Run Code Online (Sandbox Code Playgroud)
shell首先会执行,
sdl-config --cflags --libs
Run Code Online (Sandbox Code Playgroud)
并替换其输出,
g++ sdlExample.cpp <output of the above command> -o sdlExample
Run Code Online (Sandbox Code Playgroud)
然后最后执行生成的命令行。
要查看命令替换后实际执行的内容,只需echo在前面添加即可。
echo g++ sdlExample.cpp `sdl-config --cflags --libs` -o sdlExample
Run Code Online (Sandbox Code Playgroud)
这将向您显示生成的命令行。
请注意,命令替换还有一种替代语法,当您有复杂的嵌套替换时,首选这种语法。
echo g++ sdlExample.cpp $(sdl-config --cflags --libs) -o sdlExample
Run Code Online (Sandbox Code Playgroud)
这是一种非常标准的技术,可以为库/框架生成正确的命令行选项,其中选项取决于安装等。在这种情况下,该sdl-config命令为包生成必要的编译器选项 (cflags和libs) sdl。您可以通过直接在命令行上执行它来尝试它还能做什么。
sdl-config --cflags --libs
Run Code Online (Sandbox Code Playgroud)