๋ชฉ์ฐจ (OPEN)
๐ท๏ธ ctags๋
ctags๋ฅผ ์ฝ๊ฒ ์ดํดํ๋ ค๊ณ ๊ณ ๋ฏผํ๋ค ๋ณด๋,
๋ฐฑ๊ณผ์ฌ์ ์ ์ธ๋ฑ์ค(์ฐพ์๋ณด๊ธฐ)์ ๋น์ทํ๋ค๋ ์๊ฐ์ด ๋ค์๋ค.
์๋ฅผ ๋ค์ด, ์ธ๋ฑ์ค์์ '๊ณต๋ฃก'์ ์ฐพ์ผ๋ฉด,
์์ ๊ทธ ๋จ์ด๊ฐ ๋ฑ์ฅํ๋ ํ์ด์ง ๋ฒํธ๊ฐ ๋์ค๊ณ ,
์ฐ๋ฆฌ๋ ํด๋น ํ์ด์ง๋ก ๋์ด๊ฐ์ ๊ณต๋ฃก์ ๋ํ ์ ์๋ฅผ ๋ฐ๋ก ํ์ธํ ์ ์๋ค.

๋ง์ฐฌ๊ฐ์ง๋ก ctags๋ ๋ด ์ฝ๋ ์ ์ฒด์ ๋ํด์ ์ธ๋ฑ์ค๋ฅผ ๋ง๋ค์ด ์ค๋ค.
๊ทธ๋์ ๋ด๊ฐ '์ด ํจ์๋ฅผ ์ด๋์ ์ ์ํ๋๋ผ?' ํ๊ณ ๊ถ๊ธํด์ก์ ๋,
ํจ์ ์ด๋ฆ์ ์ปค์๋ฅผ ๋๊ณ ctrl + ] ๋ง ๋๋ฌ์ฃผ๋ฉด ๋ฐ๋ก ํจ์๊ฐ ์ ์๋ ์์น๋ก ์ ํํ ์ ์๋ค.
๐ ๏ธ ์ค์น ๋ฐ ๊ฐ๋จํ ์ค์ต
1) ์ค์น
์ฐ๋ถํฌ์์ ํฐ๋ฏธ๋์ ์ด์ด ์๋์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด ๊ฐ๋จํ๊ฒ ์ค์น๊ฐ ์๋ฃ๋๋ค.
sudo apt update
sudo apt install exuberant-ctags
2) ์ฐ์ต์ฉ ํด๋ ๋ง๋ค๊ธฐ
๊ฐ๋จํ๊ฒ ์ค์ตํ ๋ค, ํด๋๋ฅผ ๋ฐ๋ก ์ง์๋ฒ๋ฆฌ๊ธฐ ์ํด ๋๋ ๋ฐ๋ก ํด๋๋ฅผ ๋ง๋ค์ด์คฌ๋ค.
mkdir -p ~/ctags-test
cd ~/ctags-test
3) ์์ ์ฝ๋ ํ์ผ 2๊ฐ ๋ง๋ค๊ธฐ
[ util.c ]
๋จผ์ ์๋์ ๋ช ๋ น์ด๋ก ํ์ผ์ ๋ง๋ค์ด์ค๋ค.
vim util.c
๊ทธ๋ฆฌ๊ณ i ํค๋ฅผ ๋๋ฌ ํธ์ง ๋ชจ๋๋ก ๋ฐ๊ฟ์ค ํ,
์๋์ ๊ฐ์ด ๊ฐ๋จํ add ํจ์๋ฅผ ์ ์ํด์ค๋ค.
int add(int a, int b) {
return a + b;
}
[ main.c ]
๋ง์ฐฌ๊ฐ์ง๋ก ์๋์ ๋ช ๋ น์ด๋ก ํ์ผ์ ํ๋ ๋ ๋ง๋ค์ด์ค๋ค.
vim main.c
๊ทธ๋ฆฌ๊ณ ์์์์ ๋์ด๋๊ฒ i ํค๋ฅผ ๋๋ฌ ํธ์ง ๋ชจ๋๋ก ๋ฐ๊พผ ํ,
์๋์ฒ๋ผ ๊ฐ๋จํ main ํจ์๋ฅผ ์ ์ํด์ค๋ค.
#include <stdio.h>
int add(int a, int b); // util.c์ ์๋ ํจ์์ ์ ์ธ
int main() {
int result = add(3, 5);
printf("result = %d\n", result);
return 0;
}
4) ctags๋ก ์ธ๋ฑ์ค(์ฐพ์๋ณด๊ธฐ) ๋ง๋ค๊ธฐ
ctags๋ฅผ ์ค์นํ๊ณ ์ฝ๋๋ฅผ ์์ฑํ๋ค๊ณ ํด์ ์๋์ผ๋ก ์ธ๋ฑ์ค๊ฐ ๋ง๋ค์ด์ง๋ ๊ฒ ์๋๋ผ,
๊ผญ ์๋์ ๋ช ๋ น์ด๋ฅผ ์คํํด์ ์ง์ ์ธ๋ฑ์ค๋ฅผ ๋ง๋ค์ด์ค์ผ ํ๋ค.
ctags -R .
ls -l tags # 'tags'๋ผ๋ ํ์ผ์ด ์๊ธด ๊ฑธ ํ์ธํ ์ ์๋ค.
5) ์ง์ ํ์ธํด๋ณด๊ธฐ
๋ค์ ์๋์ ๋ช ๋ น์ด๋ก main.c ํ์ผ์ ์ด์ด์ ์ฌ์ง๊ณผ ๊ฐ์ด add๋ผ๋ ๋จ์ด ์๋ก ์ปค์๋ฅผ ์ด๋ํ๋ค.
vim main.c

์ปค์๋ฅผ ์ฎ๊ฒผ๋ค๋ฉด, ctrl + ] ๋ฅผ ๋๋ฅธ๋ค.
๊ทธ๋ฌ๋ฉด ์๋์ ์ฌ์ง์ฒ๋ผ ์๋์ผ๋ก util.c ์ ์๋ add ํจ์๊ฐ ์ด๋ฆฌ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.

๋ค์ ์๋ ์ฝ๋๋ก ๋์์ค๊ณ ์ถ๋ค๋ฉด, ctrl + t ๋ฅผ ๋๋ฅด๋ฉด ๋๋ค.
+) ์ธ์ ๋ค์ ctags๋ฅผ ๋๋ ค์ผ ํ ๊น?
์ฐ๋ฆฌ๊ฐ ์๋ ์ง๋๋ฅผ ๋ค๊ณ ๊ตญ๋ด ์ฌํ์ ํ๋ฉด, ์๋ก ์๊ธด ๊ธธ๋ค์ ์ฐพ์ ์๊ฐ ์๋ ๊ฒ์ฒ๋ผ
ํ์ผ์ ๋ง์ด ๊ณ ์น๊ฑฐ๋ ํด๋ ๊ตฌ์กฐ๊ฐ ๋ฐ๋๋ฉด, ๋น์ฐํ ๊ธฐ์กด์ ์ธ๋ฑ์ค(์ฐพ์๋ณด๊ธฐ)๋ก๋ ๋ชจ๋ ์์น๋ฅผ ์ ํํ ๊ฐ๋ฆฌํฌ ์ ์๋ค.
๋ฐ๋ผ์ ์ฝ๋๋ฅผ ์์ ํ๊ฑฐ๋ ํ๋ก์ ํธ ๊ตฌ์กฐ๊ฐ ๋ฌ๋ผ์ก์ ๋๋,
์๋์ ๋ช ๋ น์ด๋ก tags ํ์ผ์ ์ฃผ๊ธฐ์ ์ผ๋ก ๊ฐฑ์ ํด์ฃผ๋ ๊ฒ์ด ์ข๋ค.
ctags -R .
๐ ๊ฒฐ๋ก
์ด๋ฒ์ ๋ฆฌ๋ ์ค ์ค์ต ์์ ์ ํตํด ctags๋ฅผ ์ง์ ์ค์นํ๊ณ ์ฌ์ฉํด๋ณด๋ฉด์
์ ๋ง์ ๊ฐ๋ฐ์๋ค์ด ์ฌ์ ํ ์ด ๋๊ตฌ๋ฅผ ์ฐ๋์ง ์ ์ ์์๋ค.
IDE์์๋ ๋ง์ฐ์ค ํด๋ฆญ ํ ๋ฒ์ผ๋ก ํจ์ ์ ์๋ ์ฐธ์กฐ๋ก ์ฝ๊ฒ ์ด๋ํ ์ ์์์ง๋ง,
๋ฆฌ๋ ์ค ํ๊ฒฝ์์๋ ๊ทธ๋ฐ ๊ธฐ๋ฅ์ด ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณต๋์ง ์์์ ๋ต๋ตํ๋๋ฐ,
ctags๊ฐ ๋ง๋ค์ด์ฃผ๋ tags ํ์ผ๋ก Vim์์๋ ๋ง์น IDE์ฒ๋ผ ๋น ๋ฅด๊ฒ ์ฝ๋ ์ฌ์ด๋ฅผ ์ค๊ฐ ์ ์๋ค๋ ์ ์ด ๊ต์ฅํ ์ ๊ธฐํ๋ค.
์์ง ํ๊ธฐ ์ด๋ฐ์ด๋ผ ์ค์ต๋ ๊ฐ๋จํ๊ธด ํ์ง๋ง,
๊ทธ๋๋ ์ค๋์ ์ค์ต์ ํตํด์ ๋๊ตฌ๋ฅผ ์กฐ๊ธ๋ง ์์๋๋ฉด ๊ฐ๋ฐ ์์ฐ์ฑ์ด ๋ช ๋ฐฐ๋ ์ฌ๋ผ๊ฐ๋ค๋ ๊ตํ์ ์ป์ ์ ์์๋ค.
'๐ซ ํ๊ต > ๐ ๋ฆฌ๋ ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [๋ฆฌ๋ ์ค] GitHub `git clone` ์ธ์ฆ ์๋ฌ ํด๊ฒฐ ๋ฐฉ๋ฒ (Ubuntu + VirtualBox) (0) | 2025.09.23 |
|---|---|
| [๋ฆฌ๋ ์ค] VirtualBox ์ ์ฒด ํ๋ฉด ์ค์ ํ๊ธฐ (0) | 2025.09.23 |
| [๋ฆฌ๋ ์ค] ์ด์์ฒด์ ์ ์ปค๋ (4) | 2025.09.17 |
| [๋ฆฌ๋ ์ค] cscope ์ค์น ๋ฐ ์ฌ์ฉ ๋ฐฉ๋ฒ (0) | 2025.09.17 |
| [๋ฆฌ๋ ์ค] Windows 11์์ VirtualBox Ubuntu ์คํ ์๋ฌ ํด๊ฒฐ ๋ฐฉ๋ฒ (VERR_NEM_VM_CREATE_FAILED) (0) | 2025.09.17 |