이글은 예전 제 싸이월드 블로그에 작성한 글을 티스토리로 옮긴 것입니다.
원문 : 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 |