◆ 무한한 가능성/& Programming

소스코드 컬러링 ( GNU Source-HighLight for Windows ) - c++ 소스 색깔입히기, c++ html

치로로 2009. 11. 6. 14:17

<출처>
http://blog.naver.com/no2zero?Redirect=Log&logNo=80086989164


<download>




GNU Source-highlight 2.9 http://www.gnu.org/software/src-highlite/




Visual Studio 에서 작업한 코드를 HTML로 옮길때 색상을 넣어주는 프로그램이다.


1 . 프로그램을 다운받고 설치한다.


2. Tools -> External Tools 를 선택한다.


3. Add 를 눌러서 추가 후 적당히 Title 에 이름을 만든다. ex)highlight


4. Command 에는  C:\Program Files\GnuWin32\bin\source-highlight.exe


5. Arguments 에는  -s cpp -f html --data-dir="C:\Program Files\GnuWin32\share\source-highlight" --line-number-ref "$(ItemPath)" -i "$(ItemFileName)$(ItemExt)" 

을 넣고 Use Output Window에 체크를 하고 OK를 누른다.


6. VisualStudio 에서 Tool 에 가면 아까 위에서 지정한 Title 이름이 보이는데


이것을 누르면 코드를 HTML 로 생성해준다. HTML 파일은 프로젝트 폴더 안에 생성된다.


// 추가


Arguments  맨뒤에 -o STDOUT ' 옵션을 추가하면 .html 을 생성해주는 대신에 VC의


output 윈도에 변환된 HTML 내용을 바로 출력해줍니다.


HTML소스코드로 출력되니까 홈페이지에 올릴 때에 편할 수 있습니다.


아래는 글을 봐도 잘 모르겠다 라고 하시는 분들을 위한 스샷입니다.


// Tools -> External Tools 선택시 화면

사용자 삽입 이미지



// 위 설정을 마치고 사용할 때의 화면

사용자 삽입 이미지


// 참고로 Visual Assist 의 색상대로 마추고 싶을땐

 C:\Program Files\GnuWin32\share\source-highlight 폴더로 들어가서

default.style 파일을 워드로 열어서 색상코드를 바꿔주면 됩니다.

아래 코드가 제가 사용하는 코드입니다. 나름 비주얼어시스트에 맞게 해놨습니다.


///// 코드

keyword blue b ;   // for language keywords
type blue b ;   // for basic types
string darkred b ;  // for strings and chars
comment darkgreen b ; // for comments
number black ;   // for literal numbers
preproc blue b ;  // for preproc directives (e.g. #include, import)
symbol darkred ;  // for simbols (e.g. <, >, +)
function darkred b;  // for function calls and declarations
cbracket black b;  // for block brackets (e.g. {, })

// 나머지 부분은 그대로 놔둬도 됩니다.

아래 HTML을 만들고 붙여넣기 한 글씨입니다. 코드는 ..그냥 테스트용으로 - .,-

한가지 흠이라면 라인넘버까지 같이나와서..안좋을때도 좋을때도 있군요 ^^;

01: #include "stdafx.h"
02: #include "MacroTest.h"
03: 
04: CMacroTest::CMacroTest()
05: {
06: }
07: 
08: CMacroTest::~CMacroTest()
09: {
10:         printf("Test"); // 주석 테스트
11:         cout << mi + 2 << endl;
12: }
13: 
14: void CMacroTest::setID(int i)
15: {
16:         mi = i;
17: }
 
1: class Rational { ... };
2: 
3: const Rational operator* (const Rational& lhs, const Rational& rhs);
4: 
5: