CMake Make 파일의 dependency 를제대로세팅하는것은귀찮은작업임 lib.h main.c main.o program bill.c fred.c bill.o fred.o libfoo.a

Similar documents
초보자를 위한 C++

강의10

Microsoft PowerPoint - chap01-C언어개요.pptx

강의의목표 Compiled Language vs. Interpreted Language 차이이해 Compiling의의미이해 Compiling의결과물확인 통합개발환경구축 Eclipse 통합개발환경을통한예제의 Bulid 및실행 Formatter 등의편집지원기능, Refer

1. 도구개요 CppUnit Testing 소개 CppUnit 는 C++ 용 testing Framework 로 Java 의 JUnit 을 C++ 로구현 C++ 언어에서사용할수있도록개발된 Open Source 프로젝트로, source code 의특정 Module 이의도

DE1-SoC Board

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

회원번호 대표자 공동자 KR000****1 권 * 영 KR000****1 박 * 순 KR000****1 박 * 애 이 * 홍 KR000****2 김 * 근 하 * 희 KR000****2 박 * 순 KR000****3 최 * 정 KR000****4 박 * 희 조 * 제


PowerPoint 프레젠테이션

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

학번 : 이름 : 1. 다음파일트리구조를가진유닉스시스템이있다. / /bin/ /home/ /home/taesoo/ /home/taesoo/downloads /usr/ /usr/lib/ /usr/local/lib /media 모든폴더에파일이하나도없다고가정했을때사용자 (t

PowerPoint 프레젠테이션

학번 : 이름 : 1. 다음파일트리구조를가진유닉스시스템이있다고가정하자. / /bin/ /home/ /home/taesoo/ /usr/ /usr/lib/ /usr/local/lib /media 모든폴더에파일이하나도없다고가정했을때사용자가터미널에서다음 ls 명령입력시화면출력


Microsoft Word - PA1_Hints.doc

Abstract View of System Components

Solaris Express Developer Edition

<4D F736F F F696E74202D20C1A632C0E520C7C1B7CEB1D7B7A5B0B3B9DFB0FAC1A4>

MAX+plus II Getting Started - 무작정따라하기

PowerPoint 프레젠테이션

PRO1_02E [읽기 전용]

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

Abstract View of System Components

- 2 -

02 C h a p t e r Java

춤추는시민을기록하다_최종본 웹용

Dialog Box 실행파일을 Web에 포함시키는 방법

PowerPoint 프레젠테이션

LXR 설치 및 사용법.doc

Interstage5 SOAP서비스 설정 가이드

Chapter 1

What is Unix? A multi-task and multi-user Operating System Developed in 1969 at AT&T s Bell Labs by Ken Thompson (Unix) Dennis Ritchie (C) Douglas Mcl

1. 도구개요 Implementation Eclipse CDT 소개 CDT(C/C++ Development Toolkit) 는 Eclipse plug-in 중하나로 C/C++ 개발을위한통합개발환경 (IDE : Integrated Development Environmen

Microsoft Word ARM_ver2_0a.docx

슬라이드 1

기술 이력서 2.0

Microsoft Word - 3부A windows 환경 IVF + visual studio.doc

슬라이드 1

(Microsoft PowerPoint - AndroG3\306\367\306\303\(ICB\).pptx)

Facebook API

Network Security - Wired Sniffing 실습 ICNS Lab. Kyung Hee University

Microsoft PowerPoint - System Programming Lab Week1.ppt [호환 모드]

1. 안드로이드개발환경설정 안드로이드개발을위해선툴체인을비롯한다양한소프트웨어패키지가필요합니다 툴체인 (Cross-Compiler) 설치 안드로이드 2.2 프로요부터는소스에기본툴체인이 prebuilt 라는이름으로포함되어있지만, 리눅스 나부트로더 (U-boot)

슬라이드 1

PowerPoint 프레젠테이션

Remote UI Guide

Microsoft PowerPoint - ARM 개발 환경.ppt

28 THE ASIAN JOURNAL OF TEX [2] ko.tex [5]

Orcad Capture 9.x

Microsoft Word - CPL-TR OM2M.doc

서현수

4S 1차년도 평가 발표자료

,,,,,, (41) ( e f f e c t ), ( c u r r e n t ) ( p o t e n t i a l difference),, ( r e s i s t a n c e ) 2,,,,,,,, (41), (42) (42) ( 41) (Ohm s law),

SIGIL 완벽입문

Microsoft PowerPoint - Install Guide[ ].ppt [호환 모드]

CD-RW_Advanced.PDF

슬라이드 1

슬라이드 1

파워포인트

PowerPoint Template

Microsoft PowerPoint - chap-02.pptx

PowerPoint 프레젠테이션

작성자 : 기술지원부 김 삼 수

6주차.key

Sena Technologies, Inc. HelloDevice Super 1.1.0

untitled

Microsoft PowerPoint APUE(Intro).ppt

1

3. 다음그림은프로세스의 file table 과 v-node 테이블의연결관계예제이다. 위그림을참고하여두개의서로다른프로세스가같은파일을 open 명령을사용하여열었을때의연결관계를도시하시오. 4. 메모리영역은 low-address 부터 high-adress 까지순서대로나열했을

Week3

을풀면된다. 2. JDK 설치 JDK 는 Sun Developer Network 의 Java( 혹은 에서 Download > JavaSE 에서 JDK 6 Update xx 를선택하면설치파일을

슬라이드 1

지난시간에... 우리는 kernel compile을위하여 cross compile 환경을구축했음. UBUNTU 12.04에서 arm-2009q3를사용하여 간단한 c source를빌드함. 한번은 intel CPU를위한 gcc로, 한번은 ARM CPU를위한 gcc로. AR

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

Microsoft PowerPoint - Code Composer Studio.pptx

PCServerMgmt7

untitled

Microsoft PowerPoint - 15-MARS

PowerPoint Presentation

MPLAB C18 C

UNIST_교원 홈페이지 관리자_Manual_V1.0

슬라이드 1

PowerPoint Presentation

(Microsoft PowerPoint - \270\266\300\314\305\251\267\316\304\250USB_Host_Device_\272\316\306\256\267\316\264\365\275\307\275\300_Philip.ppt)

1. 제품 구성 구분 분류1 분류2 Engine NetDroneUnity SDK Tools Express.NET Template 비고 크로스 플렛폼 전체 소스 DataConverter CSV to Binary CSV 변환 도구 DummyClient RTCP, RUDP

슬라이드 1

C. KHU-EE xmega Board 에서는 Button 을 2 개만사용하기때문에 GPIO_PUSH_BUTTON_2 과 GPIO_PUSH_BUTTON_3 define 을 Comment 처리 한다. D. AT45DBX 도사용하지않기때문에 Comment 처리한다. E.

vi 사용법

Snort Install Manual Ad2m VMware libnet tar.gz DebianOS libpcap tar.gz Putty snort tar.gz WinSCP snort rules 1. 첫번째로네트워크설정 1) ifconf

PowerPoint 프레젠테이션

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아

PowerPoint 프레젠테이션

Domino Designer Portal Development tools Rational Application Developer WebSphere Portlet Factory Workplace Designer Workplace Forms Designer

4. Compass 명령어를알아보자. compass <command> [<option>, <option>, <option>.. <option>] command : 명령어. clean - Remove generated files and the sass cache. com

10X56_NWG_KOR.indd

chapter4

인켈(국문)pdf.pdf

목차 1. 제품 소개 특징 개요 Function table 기능 소개 Copy Compare Copy & Compare Erase

소프트웨어공학 Tutorial #2: StarUML Eun Man Choi

Transcription:

CMake Make 파일의 dependency 를제대로세팅하는것은귀찮은작업임 CMake 는이를자동으로설정해주는도구

CMake Make 파일의 dependency 를제대로세팅하는것은귀찮은작업임 lib.h main.c main.o program bill.c fred.c bill.o fred.o libfoo.a

CMake Make 파일의 dependency 를제대로세팅하는것은귀찮은작업임 main.o : main.c lib.h gcc -c main.c bill.o : bill.c lib.h gcc -c bill.c fred.o : fred.c lib.h gcc -c fred.c libfoo.a : bill.o fred.o... program : main.o libfoo.a...

CMakeLists.txt cmake_minimum_required(version 2.6) project (test) add_executable("test" "main.c" "lib.h" "bill.c" "fred.c" )

CMakeLists.txt (using a static library) cmake_minimum_required(version 2.6) project (test) add_library( foo bill.c fred.c lib.h ) add_executable("test" "main.c" "lib.h" ) target_link_libraries( test foo )

CMakeLists.txt ( 기타자주쓰이는명령들 ) cmake_minimum_required(version 2.6) # to see actual gcc/devenv command lines set (CMAKE_VERBOSE_MAKEFILE ON) project (test) include_directories(./include ) add_executable("test" "main.c" "lib.h" "bill.c" "fred.c" ) if(win32) find_library(tourtre_library tourtre /abspath/libtourtre) target_link_libraries( test ${TOURTRE_LIBRARY}) endif()

Build using CMake ( 방법 1: In-source build) $ cmake. Makefile 이현재폴더에만들어짐 $ make

CMake Make 파일의 dependency 를제대로세팅하는것은귀찮은작업임 CMake 는이를자동으로설정해주는도구 Multi-platform development! - supports windows, cygwin, linux, OS X, and so on - cmake for cygwin is different from cmake for Windows. - the former is for gcc and make tools in cygwin - the latter is for windows visual studio or nmake CMakeLists.txt 를입력으로받아, Makefile 이나 eclipse, visual studio 의프로젝트파일로변환해준다. 리눅스에서 C/C++ 개발을할때 Make+eclipse 조합은가장쉽고직관적인개발환경을제공. 콘솔환경에서는 cmake + vim ( 또는 emacs) + cgdb + etags 조합. 익숙해지면 GUI 기반의개발툴보다편함. 윈도우에서는 cmake + visual studio 조합추천 (cygwin 은수업또는 unix app porting 시에유용.)

Build using CMake ( 방법 1: In-source build) $ cmake. Makefile 이현재폴더에만들어짐 $ make 이방법 (in-source build) 은각종 CMake 관련파일이현재폴더에생겨서소스파일들과섞이는단점이있음. 또한디버그, 릴리즈빌드등여러컴파일옵션을동시에사용할수없는등단점이많아권장되지않는방법. ( 방법 2 로넘어가기전에 cmake 가만든파일들을모두지우세요. 특히 CMakeCache.txt 는반드시지워야함.)

Build using CMake ( 방법 2: out-of-source 빌드 ) $ mkdir build $ cd build $ cmake.. Makefile 이 build 폴 더 아 래 에 만 들 어 짐 $ make 위세줄은처음한번만수행하면됨. 자동생성된 Makefile 을직접수정하지말것 소스파일추가시, CMakeLists.txt 고친후 make 수행해서 Makefile 업데이트

Build using CMake ( 디버그빌드 ) -D CMAKE_BUILD_TYPE=Debug 옵션을추가 $ mkdir build_debug $ cd build_debug $ cmake D CMAKE_BUILD_TYPE=Debug.. $ make VERBOSE=true (VERBOSE 옵션을켜보면, gcc 가사용되는것을볼수있음.) 컴파일시 g 디버그플래그 $ cgdb./test

1. Tree 구 조 Build using eclipse (out-source build 방식. 주의! src 폴더와 build 폴더를같은부모폴더밑에만들것. test_proj/src : source files and CMakeLists.txt test_proj/build : build files (release mode) test_proj/build_debug : build files (debug mode) 2. cmake 시 G Eclipse CDT4 Unix Makefiles 옵션추가 ( G 에서지원되는옵션목록은 cmake 쳐보면나옴. 윈도우에서는 Visual Studio 등지원 )

$ mkdir../build $ cd../build Build using eclipse $ cmake G Eclipse CDT4 Unix Makefiles../src $ eclipse File Import General Existing Projects into workspace Select test_proj/build folder Select a project, then press Ctrl+B (or Project build all). Run Run 이클립스안에서작업

Debug Build $ cd../build_debug $ cmake G Eclipse CDT4 Unix Makefiles D CMAKE_BUILD_TYPE=Debug../src $ eclipse File Import General Existing Projects into workspace Select test_proj/build_debug folder Select a project, then press Ctrl+B (or Project build all). Run Run 같은이클립스워크스페이스에 build_debug 도추가가능

Eclipse 사용법 Perspective ( 윈도우모양설정 ) Menu Window Open perspective Debug Menu Window Open perspective C++ 윈도우이동 ( 드래깅 ) 윈도우확대 / 축소 ( 더블클릭 ) 윈도우종류 Project Explorer ( Outline ( Console ( 함수목록 ) 실행결과 ) Problems ( 컴파일에러등 ) 워크스페이스내프로젝트목록 )

C/C++ Perspective

Debug Perspective

Run, Debugging Click project name in the project explorer Menu Run Run Menu Run Debug (Debug perspective: see callstack(debug), variables, breakpoints) Menu Run Step Into Menu Run Resume Menu Run Toggle breakpoints Eclipse 는 gdb 의주요기능을대부분지원함.

Eclipse + Cmake 또는 Visual Studio + CMake 사용시주의사항 자동생성된프로젝트파일을직접수정하지말것 프로젝트에파일추가시 CMakeLists.txt 칠것. cmake 를다시실행할필요는없음 빌드시자동으로실행됨 를직접고

etags / ctags

Contents What is ctags? Features Variants of ctags Tags file formats Using ctags with vi Practice(ctags) Using etags in emacs Practice(etags) Reference Page 24

What is ctags? 소스파일에있는항목들을쉽고빠르게찾을수있도록 tag(or index) 파 일을생성. Ken Arnold 에의해작성, BSD UNIX 에서처음소개됨. vi 와 emacs 같은텍스트에디터뿐아니라다른 utility 용가능. 들과도연동사 AcroEdit, BBEdit 8+, JED, JOE, Nedit, UltraEdit, etc Page 25

features 다양한프로그래밍언어지원. Assembler, basic, C/C++, C#, Cobol, Lisp, matlab, java, perl, etc. C/C++ 언어에서사용되는모든형식의 tag 생성가능 Class name, macro definitions, function definitions, variables, etc. 전처리기 #if 를사용한조건적구조를포함, 복잡한선택에대한해결 방법으로조건적경로선택알고리즘과 fall-back 알고리즘을사용. 사용자정의언어지원. Page 26

features Emacs 스타일의 tag 파일출력지원. 소스파일에서선택된개체의목록출력가능. 다양한 OS 상에서실행가능. UNIX, MSDOS, Linux, Windows, MacOS, OS/2, QNX, VMS, etc. Page 27

Variants of tags Etags Emacs 와 함 께 제 공 되 는 ctags utility. Vi 스 타 일 로 제 작 된 tag 파 일 과 의 호 환 성 이 떨 어 짐. Exuberant Ctags!!! 초기엔 Vim 과함께배포되었으나, Vim 6 Emacs 에대한호환성지원포함. 40 개이상의프로그래밍언어지원. sudo apt-get install exuberant-ctags 부터별도의프로젝트로분리. Hasktags Haskell 언 어 를 위 한 ctags utility. Emacs etags 지 원. Jsctags JavaScript JavaScript 를위한 ctags utility. 에서는 Exuberant Ctags 보다뛰어난성능을가짐. Page 28

Tags file formats ctags 파일형식 vi 와다양한클론들에서사용, tags 라는파일생성. {tagname}<tab>{tagfile}<tab>{tagaddress} {tagname} : 공백을포함하지않은식별자. <tab> : 구분을위한하나의 tab 문자. {tagfile} : {tagname} 이정의된위치. {tagaddress} : EX 모드에서명령사용시에쓰여질에디터상의 tag 위치. Exuberant ctags Vim 에서사용되는형식, 오리지널 ctags 형식과확장형식모두호환. {tagname}<tab>{tagfile}<tab>{tagaddress}[; <tab>{tagfield} ] Page 29

Tags file formats etags 파일형식 etags 파일은입력소스파일마다하나의섹션으로나눠진 multiple 섹션으 로구성. 각섹션은특별한목적을가진몇개의 non-ascii 문자들과일반적인텍스트 로구성. 섹션은두개의라인헤더로시작된다. <\x0c>{src_file}, {size_of_tag_definition_data_in_bytes} {tag_definition_text}<\x7f>{tagname}<\x01>{linu_number},{byte_offset} Page 30

Using etags in emacs 명령어 M-. ( find-tag ) 정 의 된 tag file 을 이 용 하 여 tag 를 찾 는 다. 프 로 젝 트 내 에 같 은 이 름 으 로 여 러 개 의 태 그 가 있 다 면 C-u M-. 을 이 용 하 여 다 음 tag 로 이 동 한 다. M-* ( pop-tag-mark ) 뒤 로 점 프 M-x tags-search regexp(regular expression) 를 이 용 한 탐 색 (shell 상 에 사 용 되 는 grep 명 령 과 비 슷 ) M-x tags-query-replace 입 력 한 query 를 통 해 검 색 된 tag 를 교 체 M-x tags-apropos 입 력 한 regexp 가 포 함 된 모 든 tag 목 록 출 력 M-x list-tags 소 스 파 일 내 에 정 의 된 모 든 tag 목 록 출 력 Page 31

Practice(etags) etags 를이용한 tag file 생성. 기본값으로 TAGS 라는이름의파일생성. -f <tagfile name> 옵션을이용하여파일이름지정가능. -a : 기존의 tag file 에추가 -V : tagfile 생성과정출력 -R : recurse, 하위폴더를포함하여 tag file 생성. Page 32

Using etags in emacs Emacs 를이용해생성된 tags 내용확인 각 각 파 파일 일 별 별로 로 섹 섹션 션이 이 나 나뉘 뉘어 어 진 진다. 다. Page 33

Using etags in emacs find tags M-. 명령이용, 찾고자하는 tag name 입력 Tag file 지정 ( 기본은 TAGS) Page 34

Using etags in emacs Etag 명령사용시 tab 음. 을이용하면매치되는명령어목록을볼수있 Page 35

Using etags in emacs regexp 를이용한 tag 검색 검색어입력 매칭되는 tag 목록을출력 Page 36

Using etags in emacs Source file 내의 tag 목록출력 Page 37

Using make with vim vim :pwd :!ls :cd src : 은확장명력을입력할때사용. vim 에도 pwd 명령이있음.! 로시작하는명령은 shell 로전달된다. :pwd :make (:!make 와달리, vim 이컴파일결과를받아온다 ) :copen (compile error 목록창열기 ) ctrl-w-s or ctrl-w-v (horizontal split window, vertical split window) ctrl-w-k ( 윗쪽윈도우로이동 ) ctrl-w-j ( 아랫쪽윈도우로이동 ) (h,j,k,l) 방향이동키대신화살표키도사용가능. Ex) ctrl-w- :q ( 현재윈도우닫기 ) Page 38

Using ctags (or etags) with vi 자주사용하는명령어들 명령어설명 :ta [tagname] Tagname 과일치하는위치로이동 Ctrl + ] Ctrl + t 커서가위치하고있는함수나구조체의정의로이동 이전위치로돌아오기 :ts [tagname] Tagname 과일치하는태그목록출력 :tj [tagname] :tn :tp :tags 목 록 이 한 개 인 경 우 이 동, 여 러 개 인 경 우 목 록 출 력 다 음 태 그 로 이 동 이 전 태 그 로 이 동 이 동 한 태 그 히 스 토 리 목 록 출 력 :sts ts 와동일, 선택된 tag 는분할된윈도우에출력 Page 39

Practice(ctags or etags) Tags 생성 etags * : 현재폴더에있는소스에대한 tag 생성 etags R : 하위폴더를포함한모든소스에대한 tag 생성 Exuberant-ctags 의경우 -R 옵션안됨. 그대신아래명령사용 Find. -iname *.cpp -or -iname *.h xargs etags Tags 내용확인 (vi TAGS) Page 40

Practice(ctags) Tag file 선택 :set tags=./tags vim 에서쉬운 tag 사용을도와주는오픈소스프로그램 https://github.com/gmarik/vundle http://valloric.github.io/youcompleteme/ https://github.com/gmarik/vundle/wiki/examples http://code.google.com/p/gitv vi 에서 tags 를이용한함수간의이동 tags stack history 확 인 Page 41

Reference source forge http://ctags.sourceforge.net/ Emacs Tags http://www.emacswiki.org/emacs/emacstags emacs http://www.gnu.org/software/emacs/emacs.html Page 42

Quiz Page 43 Download source codes of any open source program For example, FLTK or Ogre which uses CMake Build Debug-build http://www.fltk.org/software.php?version=1.3.2&file=fltk/1.3.2/fltk-1.3.2-source.tar.gz Trace a test program using cgdb Find a function which is called when a button is clicked using combinations of :vimgrep, :grep and :ts in the vim editor e.g. in the VIM :cd examples :vimgrep main *.cxx :copen :ts MyMenuCallback