2011-04-30 5 views
3

우리는 컴파일 시간을 바이너리에 포함시키기 위해 __TIME__을 사용하고 있습니다. 불행히도 UTC 오프셋이없는 시간은 의미가 없습니다. 컴파일러가 실행되는 시간대를 가져 오는 확실한 방법이 보이지 않습니다. configure 스크립트에서이를 가져올 수 있다고 가정합니다. 그러나 더 좋은 방법이 있습니까?__TIME__에 대한 UTC 오프셋을 얻는 방법은 무엇입니까?

구성 스크립트에서 파일을 만들면 파일을 .h 또는 .c 파일에 저장하고 파일이 없으면 지능형 작업을 수행해야합니다.

답변

2

컴파일러 플래그를 사용하여 외부로 전달할 수 있습니다. 대부분의 컴파일러는 외부에서 #define 매크로를 정의하기 위해 '-D' 플래그를 제공합니다. UTC 정보를 환경 변수에 저장한다고 가정 해 봅시다. 사용하여 mysource.cpp에서 -D 플래그로

set $myUTC="-7" 
gcc -c mysource.cpp -DUTC=$myUTC 

을 해당 환경 변수를 전달하는 UTC 매크로 :

printf("Compiled at %d Offset %d", __TIME__, UTC); 
+0

좋아, configure 스크립트는이 달린다하는 시간 오프셋을 취득해야하고, 우리가 가정 구성 스크립트와 컴파일러가 동일한 시간대에서 실행된다는 것입니다. 그게 효과가있는 것 같아요. 이제 남은 유일한 문제는'date' 명령이 UTC 오프셋을 제공하지 않는다는 것입니다. 그래서 다른 방법으로 찾을 필요가 있습니다. 아직도, 이것은 kludge처럼 보입니다. – vy32

+0

스크립트가 다양한 시간대에 실행됩니까? 그렇지 않다면 명령을 통해 그것을 찾지 않고 스스로 놓을 수 있습니다. – asami

+0

더 나은 옵션은 UTC 스위치와 원하는 형식의'date' 명령의 출력을 사용하는 것입니다. –

관련 문제