Code::Blocks 1. 도구개요 2. 설치및실행 3. 주요기능 4. 활용예제
1. 도구개요 1.1 도구정보요약 도구명 Code::Blocks (http://www.codeblocks.org/) 라이선스 GNU Genreral Public License v3.0 소개 C++ 로작성된 C, C++, Fortran 개발지원공개 SW IDE 특징 Console, DirectX, OpenGL, OpenCV, GTK, Matlab 등다양한프로젝트템플릿제공 리눅스, 윈도우, 맥 OS 등주요운영체제모두지원 주요기능 코드편집, 문법강조기능, 코드자동완성등 컴파일, 디버거, 플러그인 다른 IDE 의프로젝트가져오기 실행환경 Linux, Windows, MacOS 사전설치도구 해당없음 카테고리 구현최신버전 v13.12 (2015.11) 관련도구 Eclipse, SharpDevelop 2
1. 도구개요 1.2 스크린캡쳐및주요기능 C, C++, Fortran 개발을지원하는 IDE GCC, Microsoft Visual C++, clang, Digital Mars, Borland C++ 등다양한컴파일러지원 GNU GDB 기반의디버거지원 3
2. 설치및실행 세부목차 2.1 다운로드 2.2 설치 2.3 설치확인 4
2. 설치및실행 2.1 다운로드 (1/4) http://codeblocks.org 에접속 왼쪽 Downloads 클릭 5
2. 설치및실행 2.1 다운로드 (2/4) Download the binary release 클릭 6
2. 설치및실행 2.1 다운로드 (3/4) GCC 컴파일러와 GDB 디버거가포함되어있는 mingw 포함버전을다운로드한다. 우측의 Download from 에있는 Sourceforge 링크클릭 7
2. 설치및실행 2.1 다운로드 (4/4) 설치파일다운로드 8
2. 설치및실행 2.2 설치 (1/4) 설치파일실행 9
2. 설치및실행 2.2 설치 (2/4) 기본으로선택되어있는전체설치옵션으로설치 10
2. 설치및실행 2.2 설치 (3/4) 설치위치지정및설치시작 11
2. 설치및실행 2.2 설치 (4/4) 설치완료및실행 12
2. 설치및실행 2.3 설치확인 (1/3) 컴파일러자동감지내용확인후 OK 클릭 13
2. 설치및실행 2.3 설치확인 (2/3) 연결파일종류설정후 OK 클릭 14
2. 설치및실행 2.3 설치확인 (3/3) 실행화면 15
3. 주요기능 세부목차 3.1 화면레이아웃 3.2 소스편집 3.3 컴파일및빌드 3.4 디버깅 3.5 다른 IDE 프로젝트가져오기 3.6 플러그인 16
3. 주요기능 3.1 화면레이아웃 크게메뉴및툴바, 관리창, 편집창, 로그및기타창의 4 구역으로분류 메뉴및툴바 관리창 편집창 로그및기타 17
3. 주요기능 3.2 소스편집 일반적인 IDE 와마찬가지로탭을이용한다중파일편집, 코드하이라이트, 코드접기 (folding), 코드추천기능제공 18
3. 주요기능 3.2 컴파일및빌드 (1/2) 다양한컴파일러를지원한다. 19
3. 주요기능 3.2 컴파일및빌드 (2/2) Build 명령을통해컴파일과빌드를수행 20
3. 주요기능 3.4 디버깅 (1/4) 디버그실행모드지원 - Step into, Step out, Step over 등실행위치이동기능 Run to Cursor 커서위치까지실행 Next Line 다음행까지실행 Step into 루틴내부로이동 Step out 루틴빠져나오기 Next instruction 다음명령 Step into instruction 명령내부로이동 21
3. 주요기능 3.4 디버깅 (2/4) Breakpoint( 중단점 ) 설정 - 행번호우측지점을클릭해서설정 - Breakpoint 를우클릭해서조건설정 카운트와조건중택일해서적용가능 22
3. 주요기능 3.4 디버깅 (3/4) 디버깅을지원하는다양한기능제공 - Breakpoints 목록, CPU Register, Call Stack, Disassembly, Memory dump, Runnging threads, Watches 23
3. 주요기능 3.4 디버깅 (4/4) 디버깅을지원하는다양한기능제공 - Breakpoints 목록, CPU Register, Call Stack, Disassembly, Memory dump, Runnging threads, Watches 24
3. 주요기능 3.5 다른 IDE 프로젝트가져오기 다른 IDE 에서작업중인프로젝트나워크스페이스를가져올수있다. 25
3. 주요기능 3.6 플러그인 (1/2) 다른 IDE 에서작업중인프로젝트나워크스페이스를가져올수있다. 설치된플러그인 설치할수있는플러그인링크 26
3. 주요기능 3.6 플러그인 (2/2) 설치할수있는플러그인목록 27
4. 활용예제 세부목차 4.1 예제소개 4.2 프로젝트생성 4.3 예제소스작성 4.4 디버그 4.5 예제실행 28
4. 활용예제 4.1 예제소개 콘솔프로그램을 C++ 로작성할수있는프로젝트를생성하고, 디자인패턴중의하나인컴포지트 (Composite) 패턴을구현하고, 디버깅방법을알아보고, 예제를실행해서콘솔에서결과를확인한다. 29
4. 활용예제 4.2 프로젝트생성 (1/5) 콘솔프로그램을작성할수있는프로젝트를생성한다. 30
4. 활용예제 4.2 프로젝트생성 (2/5) 콘솔애플리케이션마법사가실행된다. 언어는 C++ 을선택한다. 31
4. 활용예제 4.2 프로젝트생성 (3/5) 프로젝트이름과프로젝트위치를지정하고 Next 를클릭한다. - 아래의두가지항목은자동으로입력된다. 32
4. 활용예제 4.2 프로젝트생성 (4/5) 프로젝트에서사용할컴파일러와디버그및배포관련내용을설정한다. - 일단주어진기본값대로설치한다. 나중에변경가능하다. 33
4. 활용예제 4.2 프로젝트생성 (5/5) 프로젝트생성이완료된다. 34
4. 활용예제 4.3 예제소스작성 (1/2) Sources 폴더를클릭하면 Hello World 예제소스가표시된다. main.cpp 더블클릭 35
4. 활용예제 4.3 예제소스작성 (2/2) main.cpp 파일을아래의내용으로대체한다. #include <iostream> #include <vector> #include <string> using std::cout; using std::vector; using std::string; class Component { public: virtual void list() const = 0; virtual ~Component(){}; }; class Leaf : public Component { public: explicit Leaf(int val) : value_(val) { } void list() const { cout << " " << value_ << "\n"; } private: int value_; }; class Composite : public Component { public: explicit Composite(string id) : id_(id) { } void add(component *obj) { table_.push_back(obj); } void list() const { cout << id_ << ":" << "\n"; for (vector<component*>::const_iterator it = table_.begin(); it!= table_.end(); ++it) { (*it)->list(); } } private: vector <Component*> table_; string id_; }; int main() { Leaf num0(0); Leaf num1(1); Leaf num2(2); Leaf num3(3); Leaf num4(4); Composite container1("container 1"); Composite container2("container 2"); } container1.add(&num0); container1.add(&num1); container2.add(&num2); container2.add(&num3); container2.add(&num4); container1.add(&container2); container1.list(); return 0; 36
4. 활용예제 4.4 디버깅 (1/10) main.cpp 의 38 행에 Breakpoint 를설정한다. 37
4. 활용예제 4.4 디버깅 (2/10) 빨간색삼각형버튼을클릭하여디버그모드로실행 38
4. 활용예제 4.4 디버깅 (3/10) 콘솔창이실행되며, 38 행의 Breakpoint 에노란색삼각형이표시되며실행이멈춘다. 39
4. 활용예제 4.4 디버깅 (4/10) obj 의값을확인하기위해 obj 를우클릭해서 Watch obj 를클릭한다. 40
4. 활용예제 4.4 디버깅 (5/10) Watches (new) 창이나타나며 obj 의상태를확인할수있다. 41
4. 활용예제 4.4 디버깅 (6/10) 다시빨간색삼각형을클릭하면실행이재개 (resume) 된다. 42
4. 활용예제 4.4 디버깅 (7/10) Watches 창내의 obj 값이바뀌어있다. 43
4. 활용예제 4.4 디버깅 (8/10) Watches 창내의버튼을 SHIFT 와함께누르면상세한상태를볼수있다. SHIFT 와함께클릭 44
4. 활용예제 4.4 디버깅 (9/10) 다시빨간색삼각형을클릭하면실행을재개한다. 71 행에서 container1 에 container2 를추가했기때문에, 계속재개하다보면다음과같이 Leaf 가아닌 Composite 가들어오는것을확인할수있다. 45
4. 활용예제 4.4 디버깅 (10/10) 빨간색삼각형을한번더클릭하면프로그램실행이정상적으로끝난다. - 아래와같이 perspective를저장하라는알림창이뜰수있는데, Yes를눌러저장한다. 46
4. 활용예제 4.5 예제실행 (1/2) 툴바에서기어버튼은빌드를, 녹색삼각형버튼은실행을의미하며, 기어와녹색삼각형이함께있는버튼은빌드와실행을함께수행한다. 빌드및실행버튼을클릭한다. 47
4. 활용예제 4.5 예제실행 (2/2) 툴바에서기어버튼은빌드를, 녹색삼각형버튼은실행을의미하며, 기어와녹색삼각형이함께있는버튼은빌드와실행을함께수행한다. 빌드및실행버튼을클릭하면아래와같이콘솔프로그램이실행된다. 48