Autoconf обычно любит тестировать все для языка C по умолчанию, и именно поэтому вы получаете $OPENMP_CFLAGS
в результате для команды AC_OPENMP
. Однако Autoconf также предоставляет механизмы для изменения языка программирования (и, следовательно, компилятора) с помощью команды AC_LANG
(пожалуйста, посмотрите на Autoconf/Language Choice webpage для получения дополнительной информации, а также некоторых альтернатив).
Следующий код был протестирован с использованием команды autoconf 2.69 и с использованием команды: autoreconf -fiv
(также используя пустой файл Makefile.am).
AC_INIT([omp-fortran-sample], [1.0])
AC_PROG_CC
AC_PROG_FC([gfortran])
dnl Checks for OpenMP flag for C language, stores it in $OPENMP_CFLAGS
AC_LANG(C)
AC_OPENMP
dnl Checks for OpenMP flag for Fortran language, stores it in $OPENMP_FCFLAGS
AC_LANG(Fortran)
AC_OPENMP
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
В результате выполнение Configure показывает два теста для OpenMP, как показано здесь:
checking for gcc option to support OpenMP... -fopenmp
checking for gfortran option to support OpenMP... -fopenmp
И Makefile теперь включает в себя как OPENMP_CFLAGS
и OPENMP_FCFLAGS
определений, среди остальных, как показано ниже:
...
MKDIR_P = /bin/mkdir -p
OBJEXT = o
OPENMP_CFLAGS = -fopenmp
OPENMP_FCFLAGS = -fopenmp
PACKAGE = omp-fortran-sample
...
Как насчет '$ OPENMP_FCFLAGS'? –
Без изменений ... его все еще не набирает OPENMP_FCFLAGS – BaRud
Я действительно не понимаю autotools, но не должен ли строка 'AC_OPENMP' быть ** после **' AC_PROG_FC ([gfortran]) '? Учитывая, что последний, скорее всего, устанавливает компилятор Fortran, можно было бы ожидать, что обнаружение OpenMP должно быть выполнено после того, как был установлен компилятор, а не раньше. –