카테고리 : 프로젝트
2008/02/13   소스분석툴 소개( Doxygen과 Graphviz 조합.) [5]
2007/10/12   [Posix 환경구축]msys 설치
2007/09/04   CDT를 이용한 이클립스와 MinGW의 연동
소스분석툴 소개( Doxygen과 Graphviz 조합.)
 회사에서 소스분석할 일이 많아 회사에서 이상없이(?) 사용할 수 있는 소스분석툴을 찾고 있었습니다. 오래전에 설명한  Source-Navigator ( http://nahanmil.egloos.com/64509 ) 좋은 툴이긴 하지만 비주얼 한 맛이 떨어졌습니다.. 그래서 오랜 검색 끝에 Doxygen 으로 소스분석하는 방법을 알았습니다. 이미 내 블로그에서 doxygen doxygen 은 문서화 툴로( http://nahanmil.egloos.com/42481 , http://nahanmil.egloos.com/3165062 ) 소개한 적 있었습니다.
 그런데 오늘 Doxygen의 조금 다른 이용방법을 알게되었습니다.

 
이런 그림도 그려주고
이런 그림도 그려주면서 동시에 문서도 만들어 줍니다.
(이 그림들은 제가 요즘에 분석하고 있는 HTML Parser 프로그램을 적용해 본 것입니다. )


 Doxygen 주석이 안 달려 있더라도 옵션을 달리 설정해 주면 Doxygen 에서 소스 분석을 편하게 만들어 주고, 옵션을 더 설정하면 Graphviz 를 이용해서 그림까지 만들어 냅니다.


=================================================
이제 본격적으로 프로그램을 설치 및 분석하기 좋은 문서가 생성되도록 하겠습니다. 이 전과정을 설명하고 있는 한글로 된 문서가 없길래 적어봅니다. 물론, 틀릴 수도 있습니다. 어쩌면 틀리는 것 투성이겠죠..

 우선 프로그램 부터 설치해야겠죠. Doxygen 은 http://www.stack.nl/~dimitri/doxygen/  (GNU General Public License 입니다.) 에서 프로그램을 받을 수 있습니다. Graphviz  은 http://www.graphviz.org/ (Common Public License 입니다. 이클립스도 이 라이센스내요.. ) 에서 프로그램을 받을 수 있습니다. 저의 경우 doxygen-1.5.5-setup.exe   doxygen-1.5.5-setup.exegraphviz-2.16.1.static.exe 파일을 다운 받았습니다.

 프로그램 설치는 적당히 하면 됩니다.


 여기에서는 Graphviz  프로그램을 열어서 사용하는 것은 없습니다. doxygen 이 이 프로그램 여기 있으니 니가 알아서 사용해라라고 알려주기만 하면 됩니다.

 그래서 doxygen 설정만 하면 됩니다. Doxywizard 프로그램을 실행합니다.

 Step 1의 "Wizard.." 버튼을 클릭합니다. Project Tab에서 Proeject Name 과 버전을 적당히 적어줍니다. 여기서 중요한 것은 source code directory 입니다. 여기에 select 버튼을 이용해 분석하고 싶은 소스의 디렉토리를 설정합니다. 그 설정한 디렉토리의
하위디렉토리도 포함하고 싶다면 바로 밑의 scan recursively를 체크해 둡니다. 아래의 Destination Directory는 생성된 문서들이 위치할 디렉토리를 입력하면 됩니다.



Mode 탭에서는 밑의 언어부분은 doxygen이 알아서 설정하기 때문에 그다지 만질일이 없다고 하니 자기가 분석하려는  프로그래밍 언어와 다를 때만 만지도록 하자.. 그리고 여기서는 위에 있는 All entities 를 꼭 선택하도록 하자. 우리가 만들어져 있는 프로그램을 분석하기 경우이기 때문에 이 버튼을 꼭 선택해야 한다. 그 밑에 있는 체크 박스는 자세히 모르겠다.... 패스...

 Output 탭은 알아서 생성하고 싶은 파일을 선택한다. Html 파일은 꼭 이용하자. LaTex는 프로그램이 있어야 이용가능..

 마지막 탭은 Use dot ..... 이 부분을 체크하자... 아래 체크 박스는 입맛대로 설정하면 된다...
 

이제 이 대화상자를 OK버튼을 눌러서 빠져나온다..

  메인 대화상자에서 Expert 버튼을 클릭한다. 

 첫 번째 탭에서 Output Language 는 Korean을 꼭 설정하면 나중에 만들어진 문서에 한글로 메뉴와 설명이 붙는다.



 나머지는 입맛대로 설정...

 가장 중요한 부분은 dot 탭을 설정하는 부분이다. 이 dot 탭은 거의 마지막 탭이다. 잘 찾기 바란다..
 이중 Dot Path 설정이 중요하다. 이 부분을 설정해 두어야 Doxygen이 Graphviz  안의 dot 프로그램을 찾아가 알아서 그림까지 만들어 준다. Graphviz  를 설치한 디렉토리 안의 /bin 폴더로 잡아 준다.
 나의 경우에는 C:/tools/Graphviz2.16/bin  이다.
 나머지 check box는 입맛대로.. 개인적으로 난 다 설정했다... 뭐가 뭔지 모르므로.... 이렇게 하면 분명 문서를 생성하는데 시간이 걸리긴 할 것 같다.

 Step2로 넘어가 이 설정한 것을 저장한다. 나중에 Step 1 의 Load를 통해 이 설정파일을 다시 이용할 수 있다.

Step3의 work directory는 뭘까??? 내 추측으로는 이 Doxygen wizard가 실제 작동하는게 아니라 안의 doxygen.exe 파일이 실제로 동작하는데 이 프로그램은 어니 디렉토리에서 실행할 것인가 그 위치를 잡는 것 같다. 그다지 안 중요할 것 같다.
나의 경우 소스 디렉토리의 바로 위로 잡았다.      C:/source  로 잡았다..

 마지막으로 Start 버튼 클릭...


Output 디렉토리로 설정한 곳에 Html 폴더가 생겼고 그 안에 여러 파일들이 설정되었습니다. index.html 파일을 열어 보면서 살펴보면 됩니다.

 혹시 설정이 잘못되어 안 나오는 분들을 위해 제 설정파일을 올립니다. 당연히 개인마다 설정이 다를 수 있는 것을 감안하고 보세요...


Doxyfile
by nahanmil | 2008/02/13 23:39 | 프로젝트 | 트랙백 | 덧글(5)
[Posix 환경구축]msys 설치
예전에  MSYS를 설치하는 법을 적어 둔 글이 있습니다. (  [Posix 환경구축]msys 설치(old)  ) 그 글을 old 로 만들어 두고 새 글을 쓰겠습니다. 그 글 자체도 그리 오래된 글은 아니라 새롭게 글을 적어 가면서 혹시나 모르게 바뀌는 부분이 있을 수 있어 적어 놓겠습니다. 또, 글이 두개면 설치시 모르는 것이 나오더라도 찾아 볼 수 있는 문서가 2개가 되는 장점도 있는 것 같습니다..

이 번 설치도 MinGW 가 설치되어 있는 상태에서 진행하겠습니다. 이 MinGW 설치법은 제 블로그의 다른 글을 참고해주세요.(그 설치법도 2개의 글이 있습니다. )
우선 프로그램부터 다운 받아야 합니다. 다음 링크를 따라 갑니다. http://sourceforge.net/project/showfiles.php?group_id=2435 여기서 MSYS: Minimal System 를 다운 받습니다. 제가 다운 받은 프로그램 버전은 March 16, 2004 에 나온 msys-1.0.10  입니다. 이 중에서도 우리에게 필요한 MSYS-1.0.10.exe 파일을 다운 받겠습니다. 
 
 프로그램을 설치해 봅시다. 저는 C:\tools\msys 라는 경로를 새로 만들어 주어서 C:\tools\msys\1.0 에서 \1.0을 지우고
설치했습니다. (개인적으로 디렉토리 이름이 긴 것을 안 좋아해서 1.0 이라는 버전명을 지웠습니다. )
 설치가 끝날 쯤이면 콘솔창이 뜨면서 다음과 같은 문구가 나오내요.
-------------------------------------
This is a post install process that will try to normalize between
your MinGW install if any as well as your previous MSYS installs
if any. I don't have any traps as aborts will not hurt anything.
Do you wish to continue with the post install? [yn ]
------------------------------------------------------
예전에 yes라고 입력했었기 때문에 y라고 입력해 봅니다. (MinGW 설치나 설정을 계속 할 거냐고 묻는 것 같군요.)  

y를 입력하면 새로운 문구가 나옵니다.
--------------------------------------
Do you have MinGW installed? [yn ]
--------------------------------------
저의 경우 MinGW가 설치되어 있기 때문에 y를 선택했습니다.

------------------------------------
Please answer the following in the form of c:/foo/bar.
Where is your MinGW installation?
-----------------------------------
저의 경우 C:/tools/MinGW 라고 입력했습니다. \대신 / 를 사용해서 입력합니다. 여기서 잘못 입력해도 나중에 설정을 고칠 수 있으니 걱정하지 말고 입력합니다.
 역시 이번에도 오류가 발생했군요.. 어떻게 입력하라는 것인지 모르겠군요.. 설정을 고쳐야지 별수 없겠내요..
어째든 계속 엔터... 그러면 설치가 끝납니다.

 이렇게 해서 우 선 설치 끝났습니다. 다음은 설정을 해야합니다
.
설치한 디렉토리에 etc 라는 디렉토리가 생겼습니다.  이 안에 fstab.sample 라고 있는데 만일을 위해 이 파을을 남겨두기위해 이 파일을 복사한후, 이름을 fstab 이라고 고칩니다. (확장자는 없습니다.) 이 파일안에
#Win32_Path Mount_Point
c:/mingw /mingw
c:/ActiveState/perl /perl
라고 쓰여진 부분이 있습니다. 앞에 있는 c;/mingw 대신에 실제로 minGW 가 있는 디렉토리를 적어줍니다. 
c:/tools/MinGW /mingw
같이 고쳐줍니다. 다시말하지만 \ 대신 / 를 집어 넣어야 합니다.
( perl 이 깔려 있으면 이 부분에 대해서도 설정 할 수 있는 것 같군요.. 혹시 다른 쪽 python 같은 것도 될려나??)

이제 설정도 끝났습니다. msys.bat 프로그램을 이용해서 리눅스 셀을 이용할 수 있습니다. 아직 부족한 툴이 많으므로 모든 기능을 사용할 수 있는 것은 아닙니다.
MSYS: Supplementary Tools 와 MSYS: System Builder 를 더 설치하면 부족하나마 리눅스 셀을 맛 볼 수 있습니다. 소스포지에 올라오는 posix 라고 운영체제가 써 있는 프로그램에 대해서도 컴파일이 일부 가능합니다. (다 컴파일 해 보지 않아서 다 되는지는 모르겠군요. 저의 경우 꽤나 유용하게 사용하고 있습니다. )

by nahanmil | 2007/10/12 01:29 | 프로젝트 | 트랙백
CDT를 이용한 이클립스와 MinGW의 연동
 제목이 연동이라고 해서 너무 거창한 것 같군요. 이클립스는 자바용 컴파일러이기 때문에 다른 언어에 대해서는 컴파일 능력이 없습니다. (솔직히 이 문장도 확실을 못하겠군요. 이클립스 새 버전에서 C, C++ 개발용 컴파일러는 어떻게 구성되어 있는지 모르겠군요. ) 그래서 이클립스의 기본기능과 이클립스를 확장할 수 있게 해주는 플러그인, 그리고 다른 C, C++ 컴파일러를 이용해서 C, C++프로그래밍을 할 수 있습니다.
  
 이 때 사용되는게 CDT라고 불리는 이클립스 플러그인를 이용합니다. 그리고 C, C++ 컴파일러는 MinGW라고 불리는 윈도우즈에서도 사용가능한 GCC계열의 컴파일러 입니다. (MinGW에 대한 설치는 제 다른 글을 참조하시기 바랍니다. )


 제가 사용한 이클립스 파일은 eclipse-SDK-3.3-win32.zip 입니다. 이클립스 class 버전 3.3 버전을 다운받았습니다.

 이클립스 사용법은 따로 설명하지 않겠습니다. 다만, 한가지 아셔야 할 것은 이클립스는 따로 컴파일 버튼이 없다는 것입니다. 파일을 저장하는 순간 바로 컴파일 됩니다. 그 결과를 실행할 수 있는 RUN 버튼이 있습니다.


 이제는 CDT를 설치해야 합니다. CDT( http://www.eclipse.org/cdt/ ) 홈페이지에서 다운로드(http://www.eclipse.org/cdt/downloads.php)에서 자신의 이클립스에 맞는 버전의 링크를 알아냅니다. (이클립스에서 플러그인을 다운받을 필요없이 링크주소를 따로 저장하여 나중에 자동으로 다운받아 설치하는 방식을 이용합니다. 다시 말해 다운로드가 필요 없습니다. ) 
  제가 사용해야 하는 버전은 CDT 4.0.x 버전으로 링크주소가 http://download.eclipse.org/tools/cdt/releases/europa 라고 나와 있습니다. 이 주소를 마우스를 이용해 복사해 둡니다.

 다시 이클립스로 돌아가서 Help->Software Update -> Find and Install... 을 선택합니다.
 



   그러면 다음과 같이 Search for new features to install 을 선택합니다.


  선택후 Next를 누르면 다음과 같은 창이 보입니다. 여기에서 New Remote Site...을 클릭합니다.
  


 다음과 같이 새로운 이름과 url을 적는 창이 뜹니다. 여기에 Name 을 CDT로 url을 앞에서 찾은 자기 이클립스에 맞는 CDT 주소를 적어줍니다.

  

  그 다음 OK를 선택합니다. 그러면 새로운 항목으로 CDT가 추가 되어 있고 체크되어 있습니다.

 여기서 Finish를 클릭합니다.

 그러면 자동으로 Update Manager를 실행합니다. 
 
 이 결과 다음과 같은 창이 뜹니다.
 여기서 CDT를 체크하고 디폴트로 선택되어 있는 부분을 그대로 두고 Next를 클릭합니다.

 라이센스 창이 뜨는데, 당연히 accept를 선택하고 Next ..

 그 다음 마지막으로 Finish를 클릭합니다.

 그러면 자동으로 다운받아 설치합니다.


 설치 중간에 예기치 않은 에러도 발생하내요...

  예젠에는 볼 전이 없던 녀석들인데... 어째든 Install  All 을 선택했습니다.

 마지막으로 OK를 눌러서 이클립스를 재 실행했습니다. 이제 설치가 끝났습니다.


 이번에 설치하면서 알게 되었는데 요즘 것은 자동으로 MinGW의 위치를 잡는 것 같습니다. 예전에는 일일이 MinGW위치를 설정해 주었는데, 이번 버전은 자동으로 그 위치를 잡내요... 앞의 Verification 문제도 그래서 발생하는 같기도 하고... 그리고 MinGW 대신 Cygwin 도 대용으로 사용 가능한 것 같군요....

 어째든 다행히 해야 할 일이 줄어 들었습니다. 이제 예제 프로그램을 출력해봅시다. 

 이클립스에서 File -> New를 선택하면 C Project 와 Cpp Project 가 바로 보이는 경우가 있으면 이 것을 선택하고 안 보인다면 Other를 선택합니다. Other를 선택하셨다면 다음과 같은 창이 뜹니다. 
 여기에서 C와 C++ 폴더를 클릭하면 하위구조에 C Porject 나 C++ Project가 있습니다. 이 것을 선택해 줍니다.



 이제 프로젝트 이름을 적어라는 창이 뜨는데 적당히 적어줍니다. 저는 CTest 라고 이름을 정했습니다. 그리고 다음과 같이 MinGW를 선택해 줍니다.
(Cygwin을 한 번 선택해 보았는데 Cygwin이 설치가 안 되어 있어서 나중에 오류가 뜨내요...)

 그 다음 Finish 를 선택합니다.
 
 그러면 왼쪽 창(Project 창)에 다음과 같이 Project와 include 구조가 보입니다. (제가 설치한 MinGW가 C:\tools\MinGW에 있어 저렇게 보이는 것이니 여러분의 경우는 다르겠죠..)
 왼쪽 창에서  CTest 를 선택한 후, 마우스 오른쪽 버튼을 눌러줄니다. New-> Source File 을 선택한 후  적당한 파일 이름을 정해줍니다. 저는 main.c 라고 정했습니다.
 그 후, 다음과 같이 입력합니다.
===================
#include <stdio.h>

int main()
{
printf("Hello, world");
return 0;
}

====================
(파일 끝에 엔터로 끝나야 합니다. 안 그러면 에러가 생깁니다. )
 그리고 저장합니다. 앞에서 설명했듯이 이클립스는 따로 컴파일 버튼이 없습니다. 그래서 저장후 build 버튼 (망치 같이 생겼습니다. )을 클릭합니다. 그리고 다음과 같이 생긴 run 버튼을 누르면
 아래창에  Hello, world 가 뜨면 성공입니다.


 제가 쓴 글에서 가장 그림이 많은 글을 적은 것 같군요.... 읽어 주셔서 감사합니다.  
 이클립스 CDT에 대한 다른 정보를 원하신다면  
http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/eclipse/documents/CDT

http://wiki.kldp.org/wiki.php/Eclipse
에 있습니다. 이 사이트는 제가 처음 CDT를 접할 때 참고한 문서인데, 제가 글을 쓰는 시점에는 예전 버전을 설명해 놓았내요...
위키의 특성상, 언젠가 누군가 이 글을 읽는 시점에는 업그레이가 될 수 도 있기 때문에 링크주소를 적어 둡니다.
by nahanmil | 2007/09/04 19:38 | 프로젝트 | 트랙백
<< 이전 다음 >>