2012-11-07 2 views
0

동일한 이름이지만 버전이나 위치가 다른 여러 컴파일러가 있습니다. ./configure 스크립트가 처음에 멈추는 것처럼 보입니다. PATH에 있습니다. Automake가 사용자 정의 규칙에 따라 그 중 하나를 선택하도록 어떻게 말합니까? 이미 컴파일러 버전을 확인할 수있는 매크로가 있습니다.Automake에서 컴파일러 버전을 선택하는 방법은 무엇입니까?

전 경로를 입력 할 때마다 번거로울 수 있으므로 손으로 경로를 설정하지 마십시오 (FC 변수 사용).

필자의 경우 여러 MPI 래퍼 컴파일러가 동일한 이름을 가진 다른 디렉토리에 있으며 사용자가 PATH에 추가했습니다.

아이디어는 ./configure --with-intel과 같은 것을 사용하여 IntelMPI 컴파일러를 찾아서 선택하는 것입니다.

답변

0

내 솔루션 : 사용자 지정 일치 조건이있는 configure의 검색 전략을 매크로에 복사하십시오. 구문 분석 PATHIFS 변수 (이미 configure에 정의되어 있음)를 설정하여 수행됩니다. 배쉬에서 모든 실행 파일을 찾는 것은 같은 일 것입니다 :

#!/bin/bash 

IFS=":" 
exe="mpif90" 
for dir in $PATH 
do 
    if test -f "$dir/$exe"; then 
    custom_test($dir/$exe) 
    fi 
done 

참고 : 이렇게하면 프로그램의 동작을 확인뿐만 아니라 발견해야하는 경우 manual

에이 권유된다 그것이 있는지 여부, 당신은 그것에 대한 자신의 테스트를 작성해야합니다.

1

내 솔루션은 쉘 스크립트를 통해 CC 및 기타 "귀중한"변수를 설정하는 것입니다. 크로스 컴파일을 위해 많은 변수가 설정되어 있습니다. 그래서 쉘 스크립트의 무리가 같은 내용으로 주위에 앉아 있습니다

export CROSS_COMPILE=arm-linux 
export CC=${CROSS_COMPILE}-gcc 
... 
PATH=$PATH:/some/arm/compiler/bin:/some/arm/compiler/usr/bin # for arm compiler tools 
export CFLAGS="..." 

configure 구성을 설정할 수 있습니다. 그래서 구성 시간에 내가 할 :

source /path/to/configuration/some-arm-compiler.sh 
./configure ... 

많은 타이핑을 저장합니다.

편집 : 그래서 같은 특정 사례 뭔가 일할 수 : 그래서

mpi-a.sh

export FC=mpif90 
PATH=$PATH:/path/to/mpi-a/bin:/path/to/mpi-a/usr/bin 

mpi-b.sh

export FC=mpif90 
PATH=$PATH:/path/to/mpi-b/bin:/path/to/mpi-b/usr/bin 

다음 중 하나를 사용하여 컴파일하십시오.

source /path/to/mpi-a.sh 
./configure ... 

다른:

source /path/to/mpi-b.sh 
./configure ... 
+0

당신이 동일한 이름을 가진하지만 서로 다른 위치에 여러 컴파일러가 있다면? –

+0

스크립트에 설정된'PATH'가 올바르게 필요한 경로 만 찾도록 설정되었는지 확인하십시오. 이것은 당신이 이미하고있는 것처럼 보입니다. – ldav1s

+0

나는 반대 접근법을 취했다 : 가능한 모든 경로는 사용자가 PATH에 추가해야하고'configure '는 옵션에 따라 그 중 하나를 선택한다. 당신의 접근 방식은 흥미 롭다. (물론 유닉스 정신보다는 분명히 많다.)하지만 컴파일러만큼 많은 스크립트가 있어야한다. 또한이 스크립트는 기계에 종속적이므로 이식 가능하지 않습니다. –

관련 문제