0

同じ名前でバージョンや場所が異なるコンパイラがいくつかあります。スクリプトは./configure、で最初に見つかったところで停止しているようPATHです。カスタムルールに従ってそれらの1つを選択するようにAutomakeに指示するにはどうすればよいですか?コンパイラのバージョンを確認できるマクロがすでにあります。

FCパス全体を毎回入力するのは面倒なので、(変数を使用して)手動でパスを設定することは避けたいと思います。

私の場合、いくつかのMPIラッパーコンパイラは同じ名前の異なるディレクトリにあります(そしてPATHユーザーによって追加されます)。

./configure --with-intelアイデアは、IntelMPIコンパイラを見つけて選択するようなものを使用することです。

4

2 に答える 2

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

したがって、それらの1つをコンパイルするために:

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

およびその他:

source /path/to/mpi-b.sh
./configure ...
于 2012-11-08T19:12:36.743 に答える
0

configure私の解決策:カスタム一致基準を使用して、マクロ内の検索戦略をコピーします。解析は、変数(configureですでに定義されている)をPATH設定することによって行われます。IFSBashでは、すべての実行可能ファイルを見つけることは次のようになります。

#!/bin/bash

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

注:これはマニュアルで推奨されています

プログラムの動作をチェックし、プログラムが存在するかどうかを確認する必要がある場合は、独自のテストを作成する必要があります。

于 2012-11-08T09:24:45.437 に答える