#fortran #gfortran
Вопрос:
В настоящее время я работаю над проектом, в котором мы используем open-mpi для создания кода Fortran. Чтобы скомпилировать одну (или несколько) наших зависимостей, нам пришлось ввести флаг -fallow-argument-mismatch
. Это легко работает в моей системе (Ubuntu 21).
В моей системе:
$ mpif90 --version GNU Fortran (Ubuntu 11.2.0-7ubuntu2) 11.2.0
Когда сервер непрерывной интеграции (CI) (также ubuntu-latest
) запускает тот же код, вот сообщение об ошибке:
gfortran: error: unrecognized command line option ‘-fallow-argument-mismatch’; did you mean ‘-Wno-argument-mismatch’?
Рабочий процесс CI извлекает свои зависимости с помощью:
sudo apt install -y tar wget make gcc clang python3 openmpi-* python python-dev python3-dev
Скорее всего, он был бы построен на сервере CI, если бы я использовал -Wno-argument-mismatch
, но я ищу портативное решение для наших файлов Makefile.
Любая помощь была бы очень признательна.
РЕДАКТИРОВАТЬ: Я прошу прощения, если моя формулировка была неясной, но я знаю, что окончательного переносимого флага не существует, я спрашивал, есть ли общий способ определить, какой флаг следует использовать, в сценарии оболочки или в файле Makefile. Еще раз спасибо!
Комментарии:
1. Не существует «переносимой» версии этого флага, и версии GCC до появления флага не имеют такого же поведения, чтобы требовать его. Вы должны проверить, доступен ли флаг, и использовать его только в этом случае.
2. Не существует такой вещи, как переносимые параметры компилятора. У разных компиляторов (и их версий) разные наборы флагов и директив. Да, директивы также могут использоваться здесь.
3. Я приношу извинения, если моя формулировка была неясной, но я знаю, что нет определенного переносимого флага, я спрашивал, есть ли общий способ определить, какой флаг следует использовать, в скрипте оболочки или в файле Makefile. Еще раз спасибо!