Windows와 Ubuntu 환경에 설치된 Visual Studio Code에서 Makefile을 사용하여 C/C++ 코드를 컴파일하고 실행시키는 방법에 대해 설명합니다.
테스트에 사용한 운영체제 버전은 Windows 10과 Ubuntu 20.04입니다.
2020. 8. 1 최초작성
2024. 4. 6 실행 확인
유튜브 영상입니다. https://youtu.be/lGxjf3k6IwE?feature=shared
1. C/C++ 컴파일러 설치
1.1. Windows
아래 링크에서 MinGW-W64 GCC-8.1.0 항목에 있는 x86_64-posix-seh를 다운로드합니다. 64비트 컴파일러입니다.
혹 32비트 컴파일러가 필요하면 i686-posix-dwarf를 다운로드 받으세요. 본 문서는 64비트 컴파일러를 기준으로 진행합니다.
https://sourceforge.net/projects/mingw-w64/files/mingw-w64/
압축을 풀어 C:\mingw64에 복사해줍니다.
윈도우 키 + R을 눌러서 보이는 실행창에서 sysdm.cpl를 입력하고 엔터를 누릅니다.
고급 탭을 클릭하고 아래 보이는 환경 변수 버튼을 클릭합니다.
시스템 변수에서 Path를 선택하고 편집 버튼을 클릭합니다.
새로 만들기 버튼을 클릭한 후.. 맨 아래에 다음 경로를 입력합니다.
C:\mingw64\bin
윈도우 키 + R을 입력 후, cmd 엔터를 눌러서 실행되는 명령 프롬프트 창에서
다음처럼 gcc -v 명령이 실행 가능해지는지 확인하세요.
1.2. Ubuntu
build-essential 패키지를 설치하면 gcc, g++ 등 컴파일에 필요한 패키지들이 설치됩니다.
$ sudo apt-get install build-essential |
webnautes@webnautes-pc:~$ sudo apt-get install build-essential 패키지 목록을 읽는 중입니다... 완료 의존성 트리를 만드는 중입니다 상태 정보를 읽는 중입니다... 완료 다음의 추가 패키지가 설치될 것입니다 : g++ g++-7 gcc 제안하는 패키지: g++-multilib g++-7-multilib gcc-7-doc libstdc++6-7-dbg gcc-multilib flex bison gcc-doc 다음 새 패키지를 설치할 것입니다: build-essential g++ g++-7 gcc 0개 업그레이드, 4개 새로 설치, 0개 제거 및 81개 업그레이드 안 함. 7,577 k바이트 아카이브를 받아야 합니다. 이 작업 후 25.0 M바이트의 디스크 공간을 더 사용하게 됩니다. 계속 하시겠습니까? [Y/n] |
2. Visual Studio Code 설치
다음 포스팅을 참고하여 진행하세요.
Visual Studio Code 설치하는 방법( Windows / Ubuntu )
https://webnautes.tistory.com/1841
여기서부터는 윈도우와 우분투에서 똑같이 진행하면 됩니다.
유저 인터페이스 언어를 한글로 바꾸려면 Ctrl + Shift + P를 누르고 입력창이 보이면 dislay를 입력하고 엔터를 누릅니다.
Install additional languages를 선택합니다.
Korean Language Pack을 선택하고 초록색 Install 버튼을 클릭하여 설치합니다.
설치 완료 후, 설정을 반영하기 위해 비주얼 스튜디오 코드를 종료했다가 다시 실행합니다.
설치 완료후 Visual Studio Code를 종료했다가 다시 시작하면 유저 인터페이스가 한글로 변경됩니다.
3. C/C++ 프로젝트 생성
간단히 작성한 hello.c, hello.h에서 작성한 함수 print_hello 함수를 main.c에서 불러와 사용하는 예제를 작성합니다.
메뉴에서 파일 > 폴더 열기를 선택합니다.
프로젝트를 저장할 새 폴더를 생성하고 이동 후, 폴더 선택을 클릭합니다.
폴더 이름에 가까이 가져가면 보이는 새파일 아이콘을 클릭하여 다음 3개의 파일을 생성합니다.
파일 생성 후 C/C++ 확장 설치를 물어보는 메시지 박스가 보이면 설치를 클릭합니다.
hello.h
#include <stdio.h> void print_hello(); |
hello.c
#include "hello.h" void print_hello() { printf("hello\n"); } |
main.c
#include <stdio.h> #include "hello.h" int main() { print_hello(); return 0; } |
빌드하기 위해 필요한 Makefile을 작성합니다.
우분투라면 7번쨰 줄을 program에서 ./program으로 수정하세요.
Makefile을 간단히 설명하면 hello.c main.c를 각각 오브젝트 파일(*.o)로 컴파일한 후, 오브젝트 파일을 합쳐서 program 실행파일을 생성합니다.
소스 코드 컴파일 옵션을 추가하기 위해 CFLAGS 변수를 사용하며 오브젝트 파일들을 링크하여 실행파일로 만들 때 옵션을 추가하기 위해 LDFLAGS 변수를 사용합니다.
자신의 프로젝트에 맞는 Makefile을 만들기 위해서는 Makefile 작성 방법에 대해 공부해야 합니다.
CC = gcc CFLAGS = -c -g LDFLAGS = OBJECTS = main.o hello.o run: all program all: program program : $(OBJECTS) $(CC) $(LDFLAGS) -o program $(OBJECTS) main.o : main.c $(CC) $(CFLAGS) main.c hello.o : hello.c $(CC) $(CFLAGS) hello.c |
메뉴에서 터미널 > 기본 빌드 작업 구성을 선택합니다.
템플릿에서 tasks.json 파일 만들기를 선택합니다.
Others를 선택합니다.
tasks.json 내용을 다음으로 교체하고 Ctrl + S를 눌러서 저장합니다.
윈도우즈
{ // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "2.0.0", "tasks": [ { "label": "build", "type": "shell", "command": "mingw32-make", "group": { "kind": "build", "isDefault": true } } ] } |
리눅스
{ // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "2.0.0", "tasks": [ { "label": "build", "type": "shell", "command": "make", "group": { "kind": "build", "isDefault": true } } ] } |
main.c를 열고 Ctrl + Shift + B를 누르면 컴파일 후, 프로그램이 실행됩니다.
폴더창을 보면 오브젝트 파일(*.o)와 실행파일이 생성된 것을 볼 수 있습니다.
hello.c 코드에서 hello 대신 hello world를 출력하도록 수정하고 Ctrl + Shift + B를 누르면
#include "hello.h" void print_hello() { printf("hello world\n"); } |
수정된 파일만 다시 컴파일되고 실행이 됩니다. 출력된 메시지가 hello에서 hello world로 바뀐 것을 볼 수 있습니다.
4. C/C++ 언어 지원 설치
4-1. C/C++에 대한 문법 강조(Syntax highlighter)는 기본적으로 지원하고 있습니다.
하지만 Visual Studio Code에서 C/C++을 제대로 사용하려면 C/C++ 확장을 설치해줘야 합니다.
앞에서 아래와 같은 창이 보여 설치했다면 4.2를 건너뛰고 4.3을 진행하세요.
4-2. 설치 창이 보이지 않았다면
Ctrl + Shift + X를 누르거나 액티비티 바에서 확장 아이콘을 클릭 후, 입력란에 c/c++을 입력합니다.
검색된 리스트에서 C/C++ 항목에 있는 초록색 설치를 클릭합니다.
설치한 확장을 적용시키기 위해 비주얼 스튜디오 코드를 종료시켰다가 다시 실행합니다.
4-3. Ctrl + Shift + P를 눌러서 보이는 입력 창에 c/c++을 입력한 후,
C/C++: 구성 편집(UI)를 선택합니다.
4-4. IntelliSense 구성이 보입니다. 윈도우의 경우 4-5를 우분투의 경우 4-6을 진행하세요.
4-5. 윈도우의 경우 컴파일러 경로에 3개의 컴파일러가 인식되어 있습니다.
사용하는 언어에 따라 gcc.exe 또는 g++.exe를 선택해줍니다. 헤더파일 인식하여 작성한 코드에 유용한 정보를 제공하기 위해 필요한 작업입니다.
4-6. 우분투의 경우에도 컴파일러들이 인식됩니다.
사용하는 언어에 따라 gcc.exe 또는 g++.exe를 선택해줍니다.
4-7. 윈도우/우분투 공통부분입니다. IntelliSense 모드로 gcc-x64를 선택합니다.
4-8. 설정이 자동으로 저장되므로 현재 탭을 닫아도 됩니다.
5. 한글 입출력 예제
6-1. 리눅스 환경이라면 별다른 설정 변경없이 진행가능합니다. 7번을 진행하세요.
아래처럼 진행했는데 한글이 깨지는 경우 윈도우를 업데이트 해보세요..
메뉴에서 파일 > 기본설정 > 설정 을 선택합니다.
encoding을 검색하여 Encoding 항목을 euckr로 변경합니다.
다음 예제를 main.c로 저장하여 실행시켜보면
#include <stdio.h> int main() { printf("문자열을 입력후 엔터를 누르세요!\n"); char a[256]; scanf("%s", a); printf(" \" %s \" 를 입력하셨네요.\n", a); return 0; } |
다음처럼 코드에 입력한 한글 문자열 출력과 입력한 문자열에 대한 출력이 모두 정상인 것을 볼 수 있습니다.
'개발 환경 > C&C++ 개발환경' 카테고리의 다른 글
Visual Studio Code를 사용한 C/C++ 개발환경 만들기-(Windows/Ubuntu) (37) | 2024.10.06 |
---|---|
Visual Studio Code에서 CMake를 사용한 C/C++ 프로젝트 생성하기 (0) | 2024.04.06 |
Visual Studio Code에서 GDB 원격 디버깅하는 방법 (0) | 2023.10.05 |
GDB를 사용한 원격 디버깅 (0) | 2023.10.05 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!