Makefile.am/Configure.ac Проверка переменных условной среды
Я пытаюсь включить и отключить флаги компиляции для gcov в C++ на Linux. Я не хочу, чтобы флаги gcov были установлены постоянно. Я хочу, чтобы они устанавливались только при тестировании программного обеспечения. Переменная среды, которую я проверяю, называется TESTENABLED.
В моем файле configure.ac у меня есть следующая строка:
AM_CONDITIONAL([ENABLEGCOV],[test x$TESTENABLED = xtrue])
В моем файле Makefile.am у меня есть следующие строки:
if ENABLEGCOV
AM_CXXFLAGS = -Wall -fPIC -fprofile-arcs -ftest-coverage
else
AM_CXXFLAGS = -Wall
endif
Однако, когда я собираю свою программу, я замечаю, что она неправильно устанавливает AM_CXXFLAGS. Так что ни один из моих файлов gcov .gcno/.gcda не создается. Кто-нибудь видит, что я делаю не так?
1 ответ
У вас есть переменная окружения? true
или, возможно, к какой-то другой истинной ценности (например, 1
)?
В любом случае, обычным способом было бы добавить флаг configure
это включает определенную особенность. Следующие configure.ac
Фрагмент добавляет --enable-gcov
флаг для настройки; он также сделает распечатку, независимо от того, включил он gcov или нет:
AC_ARG_ENABLE(gcov,[AS_HELP_STRING([--enable-gcov], [enable coverage test])])
AC_MSG_CHECKING([whether to enable gcov])
AS_IF([test "x${enable_gcov}" = "xyes" ], AC_MSG_RESULT([yes]), AC_MSG_RESULT([no]))
AM_CONDITIONAL([ENABLEGCOV],[test "x${enable_gcov}" = "xyes"])
Я также нахожу Makefile.am
легче читать, просто добавив флаги CXXFLAGS
если определенное условие выполнено:
AM_CXXFLAGS = -Wall -fPIC
if ENABLEGCOV
AM_CXXFLAGS += -fprofile-arcs -ftest-coverage
endif