Ref. https://sikaleo.tistory.com/101

Ubuntu 18.04μ—μ„œ C++을 μ‚¬μš©ν•˜κΈ° μœ„ν•œ μ…‹μ—… 정리


1. 컴파일러 μ„€μΉ˜

$ sudo apt install build-essential g++ gcc


2. ν”„λ‘œμ νŠΈ 생성 및 ν΄λ”μ˜ ꡬ성

ν”„λ‘œμ νŠΈ νŒŒμΌμ€ μ•„λž˜ ꡬ쑰둜 생성

  • ${projectName}
    • /bin
    • /src
      • main.cpp

/srcμ•ˆμ— μžˆλŠ” main.cppλ₯Ό 컴파일 ν•˜μ—¬ μ‹€ν–‰κ°€λŠ₯ν•œ objective 파일이 /bin에 μ €μž₯λ˜λŠ” 방식

μ•„λž˜ 사진과 같이 ν™˜κ²½κ΅¬μΆ•μ„ ν•΄μ€€λ‹€

01


3. 컴파일러 μ„€μ •

vscode 상단 λ°”μ—μ„œ [Terminal] - [Configure Default Build Task]λ₯Ό λˆ„λ₯΄λ©΄ ν˜„μž¬ μž‘μ„±μ€‘μΈ μ–Έμ–΄(c++)에 맞좰 tasks.json의 κΈ°λ³Έ ν…œν”Œλ¦Ώ 선택 κ°€λŠ₯

02


C/C++: g++ build active file 을 μ„ νƒν•˜μž!

03


λ‹€ μ„€μ •ν•˜λ©΄ μ™Όμͺ½κ³Ό 같이 폴더가 ꡬ성됨

04


λ§Œλ“€μ–΄μ§„ tasks.json νŒŒμΌμ„ μ•„λž˜μ™€ 같이 μˆ˜μ •ν•˜μž

볡뢙 κ³ κ³ 

{
	"version": "2.0.0",
	"runner": "terminal",
	"type": "shell",
	"echoCommand": true,
	"presentation": {
		"echo": true,
		"reveal": "always",
		"focus": false,
		"panel": "shared",
		"showReuseMessage": true,
		"clear": false
	},
	"tasks": [
		{
			"type": "shell",
			"label": "C/C++: g++ build active file",
			"command": "/usr/bin/g++",
			"args": [
				// "-fdiagnostics-color=always",
				"-g3",
				"${file}",
				"-o",
				"${workspaceFolder}/bin/${fileBasenameNoExtension}"
			],
			"problemMatcher": {
				"fileLocation": [
					"relative",
					"${workspaceFoler}"
				],
				"pattern": {
					"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
					"file": 1,
					"line": 2,
					"column": 3,
					"severity": 4,
					"message": 5
				}
			},
			"group": {
				"kind": "build",
				"isDefault": true
			}
		},
		{
			"type": "shell",
			"label": "execute",
			"command": "cd ${workspaceFolder}/bin && ./${fileBasenameNoExtension}",
			"group": {
				"kind": "test",
				"isDefault": true
			}
		},
	]
}

μ„Έμ„Έν•œ λ‚΄μš©μ€ json을 곡뢀해야 μ•Œκ² μ§€λ§Œ λ‚΄κ°€ μ•„λŠ” json 파일 포맷은 이렇닀

json 포맷 μ•ˆμ— λͺ¨λ“  λ‚΄μš©λ“€μ€ key:value의 쌍으둜 μ΄λ£¨μ–΄μ ΈμžˆμŒ


보톡 μœ„μ™€ 같은 쌍으둜 이루어진 녀석듀을 object라고 λΆ€λ₯΄κ³ , μ–˜λ„€λ“€μ„ ν˜ΈμΆœν•˜κΈ°μ „ μ€‘κ΄„ν˜Έ {}κ°€ λ‚˜μ˜¨λ‹€

가끔 λŒ€κ΄„ν˜Έ []κ°€ λ³΄μ΄λŠ” κ²½μš°κ°€ μžˆλŠ”λ° μ΄λŠ” 뒀에 λ°°μ—΄(array)κ°€ λ‚˜μ˜΄μ„ λͺ…μ‹œν•œλ‹€


3. 단좕킀 μ„€μ •

[File] - [Preferences] - [Keyboard Shortcuts] λ©”λ‰΄λ‘œ λ“€μ–΄κ°€μ„œ 단좕킀λ₯Ό μ„€μ •ν•΄μ€€λ‹€

05


이 μ—­μ‹œ json으둜 ν•΄λ³΄μž

였λ₯Έμͺ½ μœ„μ— 마우슀λ₯Ό κ°€μ Έλ‹€ λŒ€λ©΄ Open Keyboard Shortcuts(JSON) μ΄λΌλŠ” λ²„νŠΌμ„ λˆ„λ₯΄μž

06


μ—΄λ¦¬λŠ” keybindings.json 파일 μ•ˆμ— μ•„λž˜ λ‚΄μš©μ„ 볡 λΆ™ ν•΄μ€€λ‹€

// Place your key bindings in this file to override the defaults
[
  // build
  {
    "key": "ctrl+b",
    "command": "workbench.action.tasks.build",
  },
  // run
  {
    "key": "ctrl+r",
    "command": "workbench.action.tasks.test"
  },
  // replace keys for overlapping tasks
  {
    "key": "ctrl+shift+b",
    "command": "workbench.action.toggleSidebarVisibility"
  },
  //
  {
    "key": "ctrl+shift+r",
    "command": "workbench.action.openRecent"
  },
]

07


4. 확인

λ‹€μ‹œ main.cpp둜 λŒμ•„μ™€μ„œ

Ctrl+b : λΉŒλ“œ

Ctrl+r : μ‹€ν–‰

μ•„λž˜μ™€ 같은 λͺ…λ Ήμ–΄κ°€ 잘 λ˜λŠ”μ§€ ν™•μΈν•œλ‹€


Ctrl+Bλ₯Ό λˆŒλ €μ„ λ•Œ, /bin νŒŒμΌμ— objective파일이 μƒκΈ°λ©΄μ„œ λΉŒλ“œν•œλ‹€

08


Ctrl+R을 λˆŒλ €μ„ λ•Œ, vscode μ•„λž˜ μͺ½μ— μœ„μΉ˜ν•œ 터미널 창에 μ½”λ“œ λ‚΄μš©μ΄ 좜λ ₯λœλ‹€

09

Leave a comment