Study: DeveloperTools(DevTool)/DevTool: CMake

[IDE] VSCode C++ CMake ๊ฐœ๋ฐœํ™˜๊ฒฝ ์„ธํŒ…(MacOS, Linux)

DrawingProcess 2022. 7. 19. 10:39
๋ฐ˜์‘ํ˜•
๐Ÿ’ก ๋ณธ ๋ฌธ์„œ๋Š” 'VSCode C++ CMake ๊ฐœ๋ฐœํ™˜๊ฒฝ ์„ธํŒ…๋ฐฉ๋ฒ•'์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋†“์€ ๊ธ€์ž…๋‹ˆ๋‹ค.
Linux์—์„œ VSCode C++ CMake ๊ฐœ๋ฐœํ™˜๊ฒฝ ์„ธํŒ…๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ •๋ฆฌํ•˜์˜€์œผ๋‹ˆ ์ฐธ๊ณ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

1. VSCode CMake ํ™˜๊ฒฝ ์„ธํŒ…(linux)

1.1 CMake Extension

  • Visual Studio Code์— ์œ„์˜ Extension(CMake Tools)์„ ์„ค์น˜ํ•˜๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์ด VSCode ํ•˜๋‹จ๋ฐ”์— ์—ฌ๋Ÿฌ ๋ฒ„ํŠผ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  • ์ด๋ฅผ ์ž˜ ํ™œ์šฉํ•˜๋ฉด CMake ์ƒ์—์„œ ์‰ฝ๊ฒŒ ๋””๋ฒ„๊น…ํ•˜๊ณ  ์‹คํ–‰ ๋ฐ ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1.2 VScode ํ•˜๋‹จ๋ฐ”

  • ํ•˜๋‹จ๋ฐ”๋ฅผ ์ด์šฉํ•˜์—ฌ Cmake ๋””๋ฒ„๊น…ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ฃผ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
  • CMake extension์„ ์„ค์น˜ํ•˜๋ฉด ์ด 7๊ฐœ์˜ ๋ฒ„ํŠผ์ด ์ƒ์„ฑ๋˜๋ฉฐ ์ฐจ๋ก€์ฐจ๋ก€ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

1.3 Compiler ์„ค์ •

  1. compiler๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ์œผ๋ฉด GCC 8.4.0 x86_64-linux-gnu๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ช…๋ นํŒ”๋ ˆํŠธ์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฐฝ์ด ๋œจ๋ฉด ์›ํ•˜๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

2. CMake Build ์‹คํ–‰

2.1 Change Build Target

command + shift + p๋กœ ๋ช…๋ น ํŒ”๋ ˆํŠธ๋ฅผ ์‹คํ–‰์‹œ์ผœ "CMake: Set Build Target"์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ ํด๋ฆญํ•˜๊ฑฐ๋‚˜, ํ•˜๋‹จ๋ฐ”์˜ [all]๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ ์‹คํ–‰ํŒŒ์ผ ์ค‘ ์›ํ•˜๋Š” ๋นŒ๋“œ ํƒ€๊ฒŸ์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • ์ด๋•Œ ํ”„๋กœ์ ํŠธ ์ „์ฒด๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด 'all'์„ ์„ ํƒํ•˜์—ฌ ์ „์ฒด๋ฅผ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2.2 CMake Build

ํ•˜๋‹จ๋ฐ”์˜ [build]๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

3. CMake Debug ์‹คํ–‰

3.1 Change Debug Target

  • command + shift + p๋กœ ๋ช…๋ น ํŒ”๋ ˆํŠธ๋ฅผ ์‹คํ–‰์‹œ์ผœ "CMake: Set Debug Target"์„ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.
  • ์‹คํ–‰ํŒŒ์ผ ์ค‘ ์›ํ•˜๋Š” ๋””๋ฒ„๊น… ํƒ€๊ฒŸ์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

๋˜๋Š”...

  • .vscode ๋‚ด์— launch.json ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜์—ฌ ๋””๋ฒ„๊น…ํ•ฉ์‹œ๋‹ค!
  • "program" ๊ฐ’์„ ์„ค์ •ํ•˜์—ฌ ์‹คํ–‰ํŒŒ์ผ์„ ์ง€์ •ํ•˜๊ณ ,
    "args" ๊ฐ’์„ ์ง€์ •ํ•˜์—ฌ argument๋ฅผ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!
{
    // IntelliSense๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€๋Šฅํ•œ ํŠน์„ฑ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์„ธ์š”.
    // ๊ธฐ์กด ํŠน์„ฑ์— ๋Œ€ํ•œ ์„ค๋ช…์„ ๋ณด๋ ค๋ฉด ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค.
    // ์ž์„ธํ•œ ๋‚ด์šฉ์„ ๋ณด๋ ค๋ฉด https://go.microsoft.com/fwlink/?linkid=830387์„(๋ฅผ) ๋ฐฉ๋ฌธํ•˜์„ธ์š”.
    "version": "0.2.0",
    "configurations": [
        {
            "type": "cppdbg",
            "preLaunchTask": "clang++ build active file",
            "request": "launch",
            "name": "Debug",
            "program": "/home/sjchoi/gmbdsvr/build/bin/MbrReceiver",
            "args": [
                "--conf", "/home/sjchoi/gmbdsvr/build/MbrReceiverConf.json"
            ],
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            // "stopAtEntry": true,
            "setupCommands": [
                {
                    "description": "gdb์— ์ž๋™ ์„œ์‹ ์ง€์ • ์‚ฌ์šฉ",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "miDebuggerPath": "/bin/gdb"
        }
    ]
}

3.2 CMake Debug

ํ•˜๋‹จ๋ฐ”์˜ ๋ฒŒ๋ ˆ ๋ชจ์–‘์˜ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ์‹คํ–‰์„ ์‹œํ‚ค๊ณ  ์‹ถ๋‹ค๋ฉด Play ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ์‹œ๋‹ค!

์ฐธ๊ณ 

๋ฐ˜์‘ํ˜•