Переносимый флаг ‘-несоответствие аргументов-аргументов’

#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. Еще раз спасибо!