์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ,
๋ฐฉ๊ธ OSX์์ homebrew๋ฅผ ์ฌ์ฉํ์ฌ Universal ctags๋ฅผ ์ค์นํ๋๋ฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์
--output-format=json
์ต์
์ด๋ฏ๋ก ํ์ฌ ๋ง์คํฐ ๋ธ๋์น๋ฅผ ๋ณต์ ํ ํ ๋ฐ๋น์ ์์ค์์ ๋น๋ํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ํ์ง๋ง ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
ctags: unknown output format name supplied for "output-format=json"
๋ช ๋ น์ ์ฌ์ฉํ ๋
ctags --output-format=json myfile.c
๋ค๋ฅธ ๋ชจ๋ ๊ฒ์ด ์๋ฒฝํ๊ฒ ์๋ํ๋ ๊ฒ ๊ฐ์ผ๋ฏ๋ก JSON ์ถ๋ ฅ ํ์์ด ๋ ์ด์ ์ง์๋์ง ์์ต๋๊น?
์ ์ง๋ด์ธ์ ์ฌ๋ฌ๋ถ!
--output-format=json
๋ํ ๋ฐฑ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ libjansson.so ๊ฐ PC์์ ์ฌ์ฉํ ์ ์๊ฑฐ๋ ctags ์คํ ํ์ผ์ ์ ๋๋ก ์ฐ๊ฒฐ๋์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
์ต์ ์ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ ๋ค๋ฅธ ์ต์ ์ผ๋ก ํ์ธํ ์ ์์ต๋๋ค.
[yamato@slave]$ u-ctags --help | grep -e --output-format
--output-format=u-ctags|e-ctags|etags|xref|json
--output-format
๋์๋ง ๋ฉ์์ง์ "json"์ด ํฌํจ๋์ด ์์ต๋๋ค.
[yamato@slave]$ u-ctags --list-features
#NAME DESCRIPTION
aspell linked with code for spell checking (internal use)
debug TO BE WRITTEN
iconv can convert input/output encodings
interactive accepts source code from stdin
json supports json format output
option-directory TO BE WRITTEN
regex can use regular expression based pattern matching
sandbox linked with code for system call level sandbox
wildcards can use glob matching
xpath linked with library for parsing xml input
yaml linked with library for parsing yaml input
"json"์ --list-features
์ต์
์ ์ถ๋ ฅ์ ํฌํจ๋ฉ๋๋ค.
์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ค๋ฉด ๋จผ์ libjansson.so๋ฅผ ์ค์นํด์ผ ํฉ๋๋ค.
"./configure ..."์์ ๋น๋ ์ ์ฐจ๋ฅผ ๋ค์ ์์ํด์ผ ํฉ๋๋ค.
๋น๋ ํ๋ก์ธ์ค์์ ์คํ๋๋ ๋๊ตฌ๊ฐ libjansson.so ์ค์น๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ธ์ํ๋ฉด ๋ค์ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค.
[yamato@slave]~/var/ctags-github% ./configure
...
checking for JANSSON... yes
...
์ ๋ Debian์ ์ ๋ชจ๋ฅด์ง๋ง(์ ๋ ๋งค์ผ Fedora๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค), libjansson์ ํจํค์ง๋ก ์ค์นํ ์ ์์ต๋๋ค.
libjansson-devel ๋๋ libjansson-dev ํจํค์ง๋ ํ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
u-ctags ๋ฐ๋น์ ํจํค์ง๋ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
https://github.com/universal-ctags/ctags/issues/1785
๋ฐ์ด๋๋ฆฌ ํจํค์ง์ ์๋ ์คํ ํ์ผ์ --output-format=json
๊ฐ ์๋ํ์ง ์์ผ๋ฉด ์๋ ค์ฃผ์ญ์์ค.
@hnakamur๋ก ํด๊ฒฐํด ๋ณด๊ฒ ์ต๋๋ค.
@masatake ์ง์ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
libjansson์ด ์ค์ ๋ก ๋๋ฝ๋์์ผ๋ฏ๋ก ์ฌ๊ธฐ์ ๋ด๊ฐ ํ ์ผ์ด ์์ต๋๋ค.
Debian ์์ libjansson-dev
ํจํค์ง๋ฅผ ์ค์นํ ๋ค์ automake๋ฅผ ์ฌ์ฉํ์ฌ ์์ค์์ ๋ค์ ๋น๋ํ์ต๋๋ค.
[user<strong i="11">@vps</strong>:~/ctags]ย ~$ sudo apt-get install libjansson-dev && ./autogen.sh && ./configure && make && sudo make install
๊ทธ๋ฆฌ๊ณ ์ ๋๋ก ์๋ํ์ต๋๋ค.
OSX ์์๋ --with-jansson
์ต์
์ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํด์ผ ํ์ต๋๋ค.
[user<strong i="18">@macosx</strong>:~/ctags]ย ~$ brew install jansson
[user<strong i="19">@macosx</strong>:~/ctags]ย ~$ brew install --with-jansson --HEAD universal-ctags/universal-ctags/universal-ctags
์ด์ ๋ ๋ฐ์ด๋๋ฆฌ ๋ชจ๋ ๋ค์์ ํ์ํฉ๋๋ค.
[user<strong i="23">@vps</strong>:~/ctags]ย ~$ ./ctags --list-features
#NAME DESCRIPTION
[...]
json supports json format output
[...]
๋์์ฃผ์ ์ ์ ๋ง ๊ฐ์ฌํฉ๋๋ค!
@fabiensabatie ์ฐธ๊ณ ๋ก, ๋ค์ ๋ณํฉ ์์ฒญ์ Debian์ ๋ณด๋๊ณ ์ผ๋ถ ์กฐ์ ์ผ๋ก ๋ณํฉ๋์์ต๋๋ค.
์ต์ Build-Depends
https://salsa.debian.org/debian/universal-ctags/blob/cedf9a1c5106d371398b35031409ae09caecf3e6/debian/control#L5 -13
๋ฐ๋ผ์ ๋ค์ Debian ๋ฆด๋ฆฌ์ค์ universal-ctags๋ ๊ธฐ๋ณธ์ ์ผ๋ก json ์ง์์ ์ ๊ณตํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
--output-format=json
๋ํ ๋ฐฑ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ libjansson.so ๊ฐ PC์์ ์ฌ์ฉํ ์ ์๊ฑฐ๋ ctags ์คํ ํ์ผ์ ์ ๋๋ก ์ฐ๊ฒฐ๋์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.์ต์ ์ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ ๋ค๋ฅธ ์ต์ ์ผ๋ก ํ์ธํ ์ ์์ต๋๋ค.
--output-format
๋์๋ง ๋ฉ์์ง์ "json"์ด ํฌํจ๋์ด ์์ต๋๋ค."json"์
--list-features
์ต์ ์ ์ถ๋ ฅ์ ํฌํจ๋ฉ๋๋ค.์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ค๋ฉด ๋จผ์ libjansson.so๋ฅผ ์ค์นํด์ผ ํฉ๋๋ค.
"./configure ..."์์ ๋น๋ ์ ์ฐจ๋ฅผ ๋ค์ ์์ํด์ผ ํฉ๋๋ค.
๋น๋ ํ๋ก์ธ์ค์์ ์คํ๋๋ ๋๊ตฌ๊ฐ libjansson.so ์ค์น๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ธ์ํ๋ฉด ๋ค์ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค.
์ ๋ Debian์ ์ ๋ชจ๋ฅด์ง๋ง(์ ๋ ๋งค์ผ Fedora๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค), libjansson์ ํจํค์ง๋ก ์ค์นํ ์ ์์ต๋๋ค.
libjansson-devel ๋๋ libjansson-dev ํจํค์ง๋ ํ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
u-ctags ๋ฐ๋น์ ํจํค์ง๋ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
https://github.com/universal-ctags/ctags/issues/1785
๋ฐ์ด๋๋ฆฌ ํจํค์ง์ ์๋ ์คํ ํ์ผ์
--output-format=json
๊ฐ ์๋ํ์ง ์์ผ๋ฉด ์๋ ค์ฃผ์ญ์์ค.@hnakamur๋ก ํด๊ฒฐํด ๋ณด๊ฒ ์ต๋๋ค.