我的解決方案是通過shell腳本設置CC
和其他「寶貴」變量,其中很多用於交叉編譯。所以,我有一大堆的shell腳本的內容與坐在身邊一樣:
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 ...
如果你有幾個編譯器具有相同的名稱,但在不同的位置? –
確保在腳本中設置的PATH設置正確,只找到需要的。這似乎是你已經在做的事情。 – ldav1s
我採取了相反的做法:用戶必須將所有可能的路徑附加到PATH,並且'configure'根據其選項選擇其中的一個。你的方法很有趣(當然,在UNIX的精神上比我的方法更多),但是你必須擁有與編譯器一樣多的腳本。而且這些腳本是依賴於機器的,因此不是便攜式的。 –