나는 이것에 대한 질문이 이미있을 것이라고 생각했지만 찾을 수는 없다.GHC : 컴파일 일 삽입
내 프로그램이 컴파일 된 날짜를 인쇄하고 싶습니다. 이를 설정하는 가장 쉬운 방법은 무엇입니까?
나는 여러 가지 가능성을 생각할 수 있지만 그 중 '쉬운'이라고 부르는 것은 없습니다. 이상적으로는 ghc --make Foo
을 수행하고 실행할 때마다 Foo
출력을 인쇄 할 수있게하고 싶습니다. 마음에 봄
다양한 비 쉬운 가능성 :
이 템플릿 하스켈을 알아보세요.
Data.Time
을 사용하여 오늘의 날짜를 가져 오는 방법을 파악하십시오. 이를 문자열로 변환하는 방법을 찾아보십시오. (이제는 내 프로그램이 작동하려면 TH가 필요하며, 매번 모듈을 다시 컴파일하도록 설득해야합니다. 그렇지 않으면 전체 프로그램이 아닌 해당 모듈의 컴파일 날짜가됩니다.시스템 날짜를 포함하는 작은 Haskell 모듈을 생성하는 쉘 스크립트를 작성하십시오. (지금은! 또한, Windows에서 쉘 스크립트는 많은 원하는 수 나뭇잎. 그 쉘 스크립트를 사용하기보다는 직접 내 프로그램을 컴파일해야한다)
앉아 아래로 포함하는 작은 하스켈 모듈을 생성하는 일부 하스켈 코드를 작성 날짜. 이전 아이디어보다 더 이식성이 뛰어나지 만 추가 빌드 단계가 필요하거나 인쇄 된 날짜가 올바르지 않습니다.)
Cabal을 통해이 작업을 수행 할 수있는 방법이있을 수 있지만 실제로이 작은 프로그램을 패키지로 만들어야합니까? 데이트 시설을 얻으려고?
아무도 간단한 제안 사항이 있습니까?
별칭 ghc는 "ghc -DNOW ="\ "'date' \" "''(Windows 셸을 찾는 방법은 모르겠다.) 모듈에'{- # LANGUAGE CPP # -}'와'now = NOW'를 사용합니다. 추악한 해킹은 더 많은 작업을 필요로하는보다 깨끗한 대안으로 당신을 밀어 넣을 정도로 추한 것일 수도 있습니다. –
@DanielFischer 분명히 Windows 셸에는 명령 출력에서 변수를 설정할 수있는 기능이 없습니다. 대신 stdin에서 텍스트를 읽는'SET/P VAR ='과 관련된 해킹을 사용해야합니다. 명령 출력을 파일로 파이프 한 다음 파이프로 다시 파이프하면 원하는 효과를 얻을 수 있지만 ... 예수! > _ < – MathematicalOrchid
오, 와우. PowerShell에도 이러한 기능이 있습니까? –