対象読者
- VSCodeを使ってc/c++をビルドする人
- tasks.jsonでpkg-configを利用したい人
結論
- コマンドと引数を""で囲む
`pkg-config --cflags --libs gstreamer-1.0\`
↓↓↓
"`pkg-config" "--cflags" "--libs" "gstreamer-1.0`"
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}",
"`pkg-config",
"--cflags",
"--libs",
"gstreamer-1.0`"
],
経緯
- コマンドラインでは次のように簡潔に書けるのだが、VSCodeでpkg-configを指定する方法が分からなかった
gcc basic-tutorial-1.c -o basic-tutorial-1 `pkg-config --cflags --libs gstreamer-1.0\'
- 仕方がないのでインクルードパスとライブラリを一つずつtasks.jsonに記載していた
"args": [
・・・
"-I/usr/include/gstreamer-1.0",
"-I/usr/include/glib-2.0",
"-I/usr/lib/x86_64-linux-gnu/glib-2.0/include",
"-lgstreamer-1.0",
"-lgobject-2.0",
"-lglib-2.0"
- GStreamerだけならなんとか我慢できたが、gtkを使用する際にインクルードパスを一つずつ記入するのは余りに面倒だったので、tasks.jsonにpkg-configを記入しようと考えた
- Internetで調べたところ、次のように書けば出来そうだったがエラーとなり、原因がつかめず困ってしまった
"args": [
・・・
"`pkg-config --cflags --libs gstreamer-1.0`"
],
- 次のページを見つけて、引数類を""で囲んだところ、pkg-configが実行されるようになった
https://www.reddit.com/r/vscode/comments/1ages23/using_backticks_inside_tasksjson/ - 今後は別のライブラリが必要になっても簡潔に書けそうです!