์ด ๋ฌธ์์ ์๋ณธ์ ์ธ๋ถ ์ํค์์ ๊ฐ์ ธ์์ต๋๋ค.
1. ๊ฐ์[ํธ์ง]
IntelliJ IDEA๋ก ๋๋ฆฌ ์๋ ค์ง ํ์ฌ JetBrains์์ 2015๋
์ ์ถ์ํ C/C++์ฉ ํฌ๋ก์คํ๋ซํผ ํตํฉ ๊ฐ๋ฐ ํ๊ฒฝ. ์ด๋ฆ์ ์ ๋๋ ๋ฐ๋ค์ฌ์(Sea Lion)์ ๋ฐ์์ด ๊ฐ์ ์ ์ ์ด์ฉํ ๋ง์ฅ๋์ด๋ค. C++ ํ์ค, libc++, Boost๋ฅผ ํฌํจํ Native C์ C++๋ฅผ ์ง์ํ๋ฉฐ, ํ์คํ ๋ฆฌ ๊ธฐ๋ฐ ์ฝ๋ ์ปดํ๋ฆฌ์
๊ธฐ๋ฅ๋ ์ ๊ณตํ๋ค. ๋ํ ์ค์๊ฐ ์ฝ๋ ๋ถ์์ผ๋ก ๋ฌธ์ ๊ฐ ๋ ๋งํ ๋ถ๋ถ์ ๋ฐ๋ก๋ฐ๋ก ์ง์ด์ค๋ค. JetBrains์ IDE๋ต๊ฒ ๋ฆฌํฉํ ๋ง ๊ธฐ๋ฅ์ด ๋งค์ฐ ๊ฐ๋ ฅํ๋ฐ, ๊ฒฝ์ ์ ํ์ธ ์ดํด๋ฆฝ์ค CDT๋ ์ฌ์ง์ด ๋น์ฃผ์ผ ์คํ๋์ค์ ๋น๊ตํด๋ On-the-fly ๋ฐฉ์์ ๋ฆฌํฉํ ๋ง๋งํผ์ ํจ์ฌ ๋ฐ์ด๋๋ค. ์๋์ฐ, macOS, ๋ฆฌ๋
์ค์ ๋ชจ๋ ์ค์น ๊ฐ๋ฅํ๋ค. ํนํ VS๋ Xcode ๊ฐ์ ์์ฉ ์์ค์ C/C++ IDE๊ฐ ์๋ ๋ฆฌ๋
์ค ์ง์์์๋ ๊ฐ๋ญ์ ๋จ๋น ๊ฐ์ ์ํํธ์จ์ด์ด๋ค.
ํ์กดํ๋ ์ฃผ์ C/C++ ๋น๋ ํ๊ฒฝ(LLVM/Clang, MSVC, MinGW-w64, Cygwin, WSL)์ ์ ๋ถ ์ง์ํ๋ฉฐ, ๊ฑฐ์ ๋ชจ๋ ๊ธฐ๋ฅ์ ๋จ์ถํค๊ฐ ์๋ค. ํฐ๋ฏธ๋๊ณผ vim ์ ์ ๋ฅผ ์ํ ํ๋ฌ๊ทธ์ธ๋ ์ ๊ณตํด ๋ง์ฐ์ค๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๊ฐ๋ฐ์ ์ง์คํ ์ ์๊ฒ ํด ์ค๋ค. ๋ํ GitHub์ ๊ฐ์ VCS์์ ํตํฉ๊ฐ๋ฐ์ ์ง์ํ๋ค.
์๋ํํฐ ํ๋ฌ๊ทธ์ธ์ผ๋ก Fortran์ ์ฌ์ฉํ ์ ์๋ค. #[1] CLion์ด Intel ์ปดํ์ผ๋ฌ์ ๋์ํ๋ค๊ณ ๋ณด๋ฉด ๋๋ค. Fortran ์ฝ๋์์๋ CLion์ ์ฝ๋ ๋ถ์ ๊ธฐ๋ฅ์ด ์ง์๋๋ค. ์ง์ํ๋ ๋ฒ์ ์ 77, 90, 95, 2003, 2008์ด๋ฉฐ, 2018๊น์ง ๋ถ๋ถ์ง์ํ๋ ์ธํ ์ปดํ์ผ๋ฌ๋ณด๋ค๋ ์ง์์ด ๋ถ์กฑํ์ง๋ง gfortran๋ณด๋ค๋ ๋ง์ด ์ง์ํ๋ค.
ํ์กดํ๋ ์ฃผ์ C/C++ ๋น๋ ํ๊ฒฝ(LLVM/Clang, MSVC, MinGW-w64, Cygwin, WSL)์ ์ ๋ถ ์ง์ํ๋ฉฐ, ๊ฑฐ์ ๋ชจ๋ ๊ธฐ๋ฅ์ ๋จ์ถํค๊ฐ ์๋ค. ํฐ๋ฏธ๋๊ณผ vim ์ ์ ๋ฅผ ์ํ ํ๋ฌ๊ทธ์ธ๋ ์ ๊ณตํด ๋ง์ฐ์ค๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๊ฐ๋ฐ์ ์ง์คํ ์ ์๊ฒ ํด ์ค๋ค. ๋ํ GitHub์ ๊ฐ์ VCS์์ ํตํฉ๊ฐ๋ฐ์ ์ง์ํ๋ค.
์๋ํํฐ ํ๋ฌ๊ทธ์ธ์ผ๋ก Fortran์ ์ฌ์ฉํ ์ ์๋ค. #[1] CLion์ด Intel ์ปดํ์ผ๋ฌ์ ๋์ํ๋ค๊ณ ๋ณด๋ฉด ๋๋ค. Fortran ์ฝ๋์์๋ CLion์ ์ฝ๋ ๋ถ์ ๊ธฐ๋ฅ์ด ์ง์๋๋ค. ์ง์ํ๋ ๋ฒ์ ์ 77, 90, 95, 2003, 2008์ด๋ฉฐ, 2018๊น์ง ๋ถ๋ถ์ง์ํ๋ ์ธํ ์ปดํ์ผ๋ฌ๋ณด๋ค๋ ์ง์์ด ๋ถ์กฑํ์ง๋ง gfortran๋ณด๋ค๋ ๋ง์ด ์ง์ํ๋ค.
2. ๋ผ์ด์ ์ค[ํธ์ง]
์ ๋ฃ ๋ผ์ด์ ์ค๊ฐ ์์ด์ผ ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ, ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ 30์ผ ์ฒดํํ๋ง ์ด์ฉํ ์ ์๋ค. ๊ต์ก์ฉ ๋ผ์ด์ ์ค๊ฐ ๋ฌด๋ฃ๋ก ์ ๊ณต๋๋ฏ๋ก, ์์ ์ด ํ์ ์ ๋ถ์ด๋ผ๋ฉด ๋ค๋ฅธ JetBrains์ ์์ฉ ์ ํ๋ค๊ณผ ๊ฐ์ด ์ฐ๊ฐ ๋ผ์ด์ ์ค๋ฅผ ์ ์ฝ ์์ด ์์ ๋กญ๊ฒ ์ฌ์ฉํ ์ ์๋ค. ๋ํ ํ๊ต์ ๋ค๋๋ ๋์์๋ ๊ณ์ํด์ ๋ผ์ด์ ์ค๋ฅผ ๊ฐฑ์ ํ ์ ์๋ค. ๊ฐฑ์ ์ ๋ผ์ด์ ์ค ๋ง๋ฃ ์ง์ ์ JetBrains๊ฐ ๋ฐ์กํ๋ ์ด๋ฉ์ผ ๋๋ JetBrains ์น์ฌ์ดํธ์ ๋ด ๊ณ์ ํ์ด์ง๋ฅผ ํตํด์ ํ ์ ์๋ค.
๊ธฐ์ ์ฉ ๋ผ์ด์ ์ค์ ๊ฐ์ธ์ฉ ๋ผ์ด์ ์ค๋ก ๋๋๋ฉฐ, ๊ธฐ์ ์ฉ ๋ผ์ด์ ์ค์ ๊ฒฝ์ฐ ์๊ฐ์ $19.9, ์ฐ๊ฐ์ $199์ด๋ฉฐ, ์ฐ๊ฐ ๋ผ์ด์ ์ค ์ฅ๊ธฐ๊ตฌ๋ ์ 3๋ ์ฐจ๊น์ง ๋งค๋ $40์ฉ ๊ฐ์ํ๋ค. ๊ฐ์ธ์ฉ ๋ผ์ด์ ์ค๋ ์๊ฐ์ $8.9, ์ฐ๊ฐ์ $89์ด๋ฉฐ, ๊ธฐ์ ์ฉ ๋ผ์ด์ ์ค์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฅ๊ธฐ๊ตฌ๋ ์ 3๋ ์ฐจ๊น์ง ๋งค๋ $18์ฉ ๊ฐ์ํ๋ค. ๋จ, ๋ง์ง๋ง ๋ผ์ด์ ์ค ๋ง๋ฃ์ผ๋ก๋ถํฐ 6๊ฐ์์ด ๊ฒฝ๊ณผํ๋ฉด ํ ์ธ์ ๋ฌดํจํ๋๋ค.
IntelliJ IDEA์ ๋ง์ฐฌ๊ฐ์ง๋ก, ์ฐ๊ฐ ๋ผ์ด์ ์ค๋ฅผ ๊ตฌ๋ ํ๊ฑฐ๋ ์๊ฐ ๋ผ์ด์ ์ค๋ฅผ 12๊ฐ์ ์ฐ์์ผ๋ก ๊ตฌ๋ ํ๋ฉด ๋ฉ์ด์ ์ ๋ฐ์ดํธ๋ฅผ ์ ๊ณต๋ฐ์ง ์๋ ์กฐ๊ฑด์ผ๋ก ๋ฌด์ ํ ๋ผ์ด์ ์ค๊ฐ ์ฃผ์ด์ง๋ค. ์ด ๋ ๋ฌด์ ํ ๋ผ์ด์ ์ค์ ํด๋นํ๋ ๋ฒ์ ์ ์ฐ๊ฐ ๋ผ์ด์ ์ค์ ๊ฒฝ์ฐ ๊ตฌ๋งค ๋น์์ ๋ฒ์ , ์๊ฐ ๋ผ์ด์ ์ค์ ๊ฒฝ์ฐ 1๊ฐ์์ฐจ์ ๊ตฌ๋งคํ ๋ฒ์ ์ด๋ค.
๊ธฐ์ ์ฉ ๋ผ์ด์ ์ค์ ๊ฐ์ธ์ฉ ๋ผ์ด์ ์ค๋ก ๋๋๋ฉฐ, ๊ธฐ์ ์ฉ ๋ผ์ด์ ์ค์ ๊ฒฝ์ฐ ์๊ฐ์ $19.9, ์ฐ๊ฐ์ $199์ด๋ฉฐ, ์ฐ๊ฐ ๋ผ์ด์ ์ค ์ฅ๊ธฐ๊ตฌ๋ ์ 3๋ ์ฐจ๊น์ง ๋งค๋ $40์ฉ ๊ฐ์ํ๋ค. ๊ฐ์ธ์ฉ ๋ผ์ด์ ์ค๋ ์๊ฐ์ $8.9, ์ฐ๊ฐ์ $89์ด๋ฉฐ, ๊ธฐ์ ์ฉ ๋ผ์ด์ ์ค์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฅ๊ธฐ๊ตฌ๋ ์ 3๋ ์ฐจ๊น์ง ๋งค๋ $18์ฉ ๊ฐ์ํ๋ค. ๋จ, ๋ง์ง๋ง ๋ผ์ด์ ์ค ๋ง๋ฃ์ผ๋ก๋ถํฐ 6๊ฐ์์ด ๊ฒฝ๊ณผํ๋ฉด ํ ์ธ์ ๋ฌดํจํ๋๋ค.
IntelliJ IDEA์ ๋ง์ฐฌ๊ฐ์ง๋ก, ์ฐ๊ฐ ๋ผ์ด์ ์ค๋ฅผ ๊ตฌ๋ ํ๊ฑฐ๋ ์๊ฐ ๋ผ์ด์ ์ค๋ฅผ 12๊ฐ์ ์ฐ์์ผ๋ก ๊ตฌ๋ ํ๋ฉด ๋ฉ์ด์ ์ ๋ฐ์ดํธ๋ฅผ ์ ๊ณต๋ฐ์ง ์๋ ์กฐ๊ฑด์ผ๋ก ๋ฌด์ ํ ๋ผ์ด์ ์ค๊ฐ ์ฃผ์ด์ง๋ค. ์ด ๋ ๋ฌด์ ํ ๋ผ์ด์ ์ค์ ํด๋นํ๋ ๋ฒ์ ์ ์ฐ๊ฐ ๋ผ์ด์ ์ค์ ๊ฒฝ์ฐ ๊ตฌ๋งค ๋น์์ ๋ฒ์ , ์๊ฐ ๋ผ์ด์ ์ค์ ๊ฒฝ์ฐ 1๊ฐ์์ฐจ์ ๊ตฌ๋งคํ ๋ฒ์ ์ด๋ค.
3. ๊ณต์ ์ง์ ์ธ์ด[ํธ์ง]
- ๋ด์ฅ
- C++ - C++14๊น์ง ์ง์, C++17์ fold expressions์ deduction guides ์ง์
- ํ๋ฌ๊ทธ์ธ
4. ์์คํ ์๊ตฌ ์ฌํญ[ํธ์ง]
5. ๊ธฐํ[ํธ์ง]
Windows 10๋ถํฐ ํ์ฌ๋ Windows Subsystem for Linux(WSL)์ ์ปดํ์ผ๋ฌ๋ฅผ ์ปดํ์ผ๋ฌ ํด์ฒด์ธ์ผ๋ก ์ฐ๋์ํฌ ์ ์๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ณ๋์ ์๋ํํฐ ์ํํธ์จ์ด ์์ด๋ ๋ค์ดํฐ๋ธ ์๋์ฐ ํ๊ฒฝ์์ POSIX API์ ํธ์ถ์ด ๊ฐ๋ฅํ๋ค! ๋จ, ๋๋ฒ๊ฑฐ์ ๊ฒฝ์ฐ ์์ง๊น์ง๋ GDB๋ง ์ง์๋๋ค.
ํด์ฒด์ธ์ผ๋ก MSVC๋ฅผ ์ฐ๊ฒฐํ ์, ๋น์ฃผ์ผ ์คํ๋์ค์์ ๋๋ฒ๊ทธ ๋ชจ๋๋ก ๋น๋ํ๋ฉด ์์ฑ๋๋ .pdb ํ์ผ์ ์ฝ์ด๋ค์ด๋ LLDB ๊ธฐ๋ฐ ์ปค์คํ ๋๋ฒ๊ฑฐ๋ฅผ ์ฌ์ฉํ๋ค. ๋น์ฃผ์ผ ์คํ๋์ค์ ์์ฒด ๋๋ฒ๊ฑฐ๋ ๋ผ์ด์ ์ค ๋ฌธ์ ๋ก CLion์ ํฌํจ์ํฌ ์ ์์๋ค๊ณ ํ๋ค. ๋ํ MSBuild๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋๋ผ VS์ฉ Make์ธ NMake๋ฅผ ์ด์ฉํด ๋น๋ํ๋ค.
macOS์์ ์ค์น ์ CMake๊ฐ ์๋ํ์ง ์์ "Hello World!"์์๋ถํฐ ๋งํ๋ ์ด์๊ฐ ๊พธ์คํ ๋ฐ์ํ๋๋ฐ, ์ด๋ 2๊ฐ์ง ๋ฐฉ๋ฒ์ ์ ์ฉํ๋ฉด ํด๊ฒฐ ๊ฐ๋ฅํ๋ค.
1. ํฐ๋ฏธ๋์ xcode-select --install ์ ๋ ฅ
2. 1๋ฒ์ ์๋ํด๋ ํด๊ฒฐ์ด ์๋ ๊ฒฝ์ฐ, Xcode๊ฐ ์ค์น๋์ด์์ง ์๋ค๋ฉด ์ค์น ํ ํฐ๋ฏธ๋์ sudo xcodebuild -license๋ฅผ ์ ๋ ฅํ๋ค. ๊ทธ ๋ค์ ๋งจ ์๋์์ agree๋ฅผ ์ ๋ ฅํ ํ File - Reload CMake Project๋ฅผ ํด๋ฆญํ๋ฉด ์ ์์ ์ผ๋ก ์๋ํ๋ค.
2020.2 ๋ฒ์ ๋ถํฐ Makefile ๋น๋ ์ง์์ด ์ถ๊ฐ๋์๋ค.
GDB๋ก ๋๋ฒ๊น ํ๋ฉด STL ์ปจํ ์ด๋์ ์์ ๊ฐ์๊ฐ ํ์๋์ง ์๋ ๋ฌธ์ ๊ฐ ์๋ค. LLDB ์ฌ์ฉ ์์๋ ์ ์ ํ์๋๋ค.
ํด์ฒด์ธ์ผ๋ก MSVC๋ฅผ ์ฐ๊ฒฐํ ์, ๋น์ฃผ์ผ ์คํ๋์ค์์ ๋๋ฒ๊ทธ ๋ชจ๋๋ก ๋น๋ํ๋ฉด ์์ฑ๋๋ .pdb ํ์ผ์ ์ฝ์ด๋ค์ด๋ LLDB ๊ธฐ๋ฐ ์ปค์คํ ๋๋ฒ๊ฑฐ๋ฅผ ์ฌ์ฉํ๋ค. ๋น์ฃผ์ผ ์คํ๋์ค์ ์์ฒด ๋๋ฒ๊ฑฐ๋ ๋ผ์ด์ ์ค ๋ฌธ์ ๋ก CLion์ ํฌํจ์ํฌ ์ ์์๋ค๊ณ ํ๋ค. ๋ํ MSBuild๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋๋ผ VS์ฉ Make์ธ NMake๋ฅผ ์ด์ฉํด ๋น๋ํ๋ค.
macOS์์ ์ค์น ์ CMake๊ฐ ์๋ํ์ง ์์ "Hello World!"์์๋ถํฐ ๋งํ๋ ์ด์๊ฐ ๊พธ์คํ ๋ฐ์ํ๋๋ฐ, ์ด๋ 2๊ฐ์ง ๋ฐฉ๋ฒ์ ์ ์ฉํ๋ฉด ํด๊ฒฐ ๊ฐ๋ฅํ๋ค.
1. ํฐ๋ฏธ๋์ xcode-select --install ์ ๋ ฅ
2. 1๋ฒ์ ์๋ํด๋ ํด๊ฒฐ์ด ์๋ ๊ฒฝ์ฐ, Xcode๊ฐ ์ค์น๋์ด์์ง ์๋ค๋ฉด ์ค์น ํ ํฐ๋ฏธ๋์ sudo xcodebuild -license๋ฅผ ์ ๋ ฅํ๋ค. ๊ทธ ๋ค์ ๋งจ ์๋์์ agree๋ฅผ ์ ๋ ฅํ ํ File - Reload CMake Project๋ฅผ ํด๋ฆญํ๋ฉด ์ ์์ ์ผ๋ก ์๋ํ๋ค.
2020.2 ๋ฒ์ ๋ถํฐ Makefile ๋น๋ ์ง์์ด ์ถ๊ฐ๋์๋ค.
GDB๋ก ๋๋ฒ๊น ํ๋ฉด STL ์ปจํ ์ด๋์ ์์ ๊ฐ์๊ฐ ํ์๋์ง ์๋ ๋ฌธ์ ๊ฐ ์๋ค. LLDB ์ฌ์ฉ ์์๋ ์ ์ ํ์๋๋ค.