이글은 예전 제 싸이월드 블로그에 작성한 글을 티스토리로 옮긴 것입니다.
원문 : http://cy.cyworld.com/home/21147242/post/52BBD4582CD5739A07C68401
원문 작성일 : 2013.12.26

============================================================

(아래 Makefile의 CFLAGS 부분은 인터넷 검색을 통해서 구한 정보이나  출처를 남기지 못햇다. )

양산 프로그램을 만들 때이다.

"이선임님, 이거 안되는데요?"
"프로그램 교체하셨나요?"
"네, 교체했어요. 버전 불러드릴까요?"

버전을 알아도 소용이 없었다. 깜빡잊고 버전을 변경하지 않은 탓이다.
버전이 자동으로 생성되게 하면 위와 같은 실수를 피할 수 있다.


내가 선택한 것은 컴파일한 시간이 버전이 되도록 하였다.

Makefile 에 아래와 같이 옵션을 추가하였다.

 

*** Makefile
CFLAGS += -DCOMPILE_DATE=\"`date +'%y.%m.%d'`\"

 

main : main.cpp
        g++ -o $@ $^ $(CFLAGS)


기호에 주의해야 한다. 큰따옴표에 그레이브(Grave, 키보드 숫자 1 왼쪽에 있는 따옴표 비슷한...)에
 어퍼스트로피(Apostrophe, 엔터키 왼쪽에 있는 따옴표...) 까지 쓰였다.

이렇게 Makefile 을 설정하고 아래와 같이 출력하면 컴파일 했을 때의 시간을 출력할 수 있다.
(한마디로 실행파일이 만들어진 시간임.)


*** main.cpp

 

1
2
3
4
5
6
7
8
9
#include <cstdio>
 
int main( )
{
        printf( "Date : %s\n" , COMPILE_DATE) ;
        printf( "__TIME__: %s\n" , __TIME__) ;
 
        return 1 ;
}

 

 

위 값을 적절히 버전처럼 변형하여 화면에 뿌려주면 언제 만들어진 실행파일인지 확인할 수 있다.

나는 아래와 같이 사용하였다.
생성한 시간을 10분단위로 쪼개어 카운트하여 나타내었다. (말 어렵다. ;;;; )
아무튼, 아래와 같이 버전을 생성하여 년월일 + 몇시 몇분(10분단위)에
생성되었는지 작성하였다.

프로그램을 릴리즈했는데 잘 안된다라는 말이 나오는 경우,
제일 먼저 이 버전부터 체크하여 최신 프로그램을 사용하고 있는지 확인하였다.

 

 

*** main.cpp


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <cstdlib>
#include <cstring>
 
int main( )
{
        char szVer[256] ;
        char * pTime ;
        int hour, min ;
 
        printf( "Date : %s\n" , COMPILE_DATE) ;
        printf( "__TIME__: %s\n" , __TIME__) ;
 
        strcpy(szVer, __TIME__) ;
 
        pTime = strtok(szVer, ":" ) ;
        hour = atoi(pTime) ;
 
        pTime = strtok(NULL, ":" ) ;
        min = atoi(pTime) / 10 ;
 
        sprintf(szVer, "%s-%02X" , COMPILE_DATE, (hour * 10) + min) ;
 
 
        printf( "szVer : %s\n" , szVer) ;
        return 1 ;
}
 

 

'삽질미학 > C,C++' 카테고리의 다른 글

STL set 컨테이너에 구조체 삽입하기  (0) 2017.01.09
Unblock me 게임 풀어주는 코드  (0) 2017.01.09
TDES-ECB 암호화 코드  (0) 2016.10.24
리눅스 getch() 모듈화하기  (0) 2016.10.20
C++ 코드를 C에서 사용하기  (0) 2016.10.14

+ Recent posts