내 코드를 컴파일하는 데 gfortran의 버전을 확인하기 위해 autoconf를 사용하려고합니다. 이식성있는 방법으로 안전하게 버전 번호를 얻으려면 어떻게해야합니까?ghostran 버전 번호를 autoconf가있는 휴대용 방식으로 찾는 방법은 무엇입니까?
가장 쉬운 방법은 단순히 gfortran -dumpversion
을 사용하는 것이지만,이 방법에 대한 몇 가지 문제점 (예 : 내 컴퓨터에서 패치 레벨 번호를 반환하지 않음)을 읽었습니다. 설명서에있는 -dumpfullversion
옵션이 구현되지 않은 것으로 보입니다 (치명적인 오류가 발생 함).
대신 gfortran --version
또는 gfortran -v
을 사용하려고합니다. 내 첫 번째 시도는 다음과 같다 : $AWK
가 AC_PROG_AWK
에 의해 발견 된 AWK 형 프로그램을 포함
GFORTRAN_VERSION=`gfortran -v 2>&1 | $AWK 'END { print }' | $AWK '{ print $3 }'`
. 그것은 내가 테스트 한 모든 리눅스 머신에서 완벽하게 작동합니다. 그러나 gfortran -v
은 항상 출력의 마지막 줄의 세 번째 위치에 버전 번호를 반환한다고 가정하는 것이 합리적이지 않습니다. 예를 들어, MacOS 또는 Windows에서이 접근 방식을 사용할 수 있습니까?
모든 조언을 매우 환영받을 것입니다, 미리 감사드립니다!
이것은 좋은 제안이지만 불행히도 저는 개발중인 패키지에 짧은 프로그램을 포함시킬 수 없습니다. 당신이 제안한 페이지에서 설명 된'gfortran -E -dM - dev/null'과 함께이 트릭을 사용할 수 있었지만, 그 솔루션은 얼마나 이식성이 있습니까? (모든 시스템에'/ dev/null' 파일이 있습니까? 아마도 그렇지 않습니다) – remek
'echo "__GNUC __.__ GNUC_MINOR __.__ GNUC_PATCHLEVEL__"| gfortran -E -cpp-2>/dev/null | 꼬리 - n 1 | sed -e 's/// g '' 출력 5.3.1 gfortran으로 5.3.1. Thats에는 몇 가지 기본 유닉스 도구 (tail and sed here)가 있고 어떤 종류의 파이핑이 지원된다는 것을 의미합니다. 휴대용 소프트웨어가 무엇인지, 소프트웨어의 종속성은 무엇인지 모릅니다. –
우리는 또한 각 값을'ver = $ (echo "__GNUC__"| gfortran -E -P -)'등으로 얻을 수 있습니다 ... – roygvib