Makefile.am/Configure.ac 条件环境变量检查
Makefile.am/Configure.ac Conditional Environment Variable Check
我正在尝试在 Linux 上启用和禁用 C++ 中 gcov 的编译标志。我不想一直设置 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。因此,正在生成 none 个 gcov .gcno/.gcda 文件。有人看到我做错了什么吗?
您是否将环境变量设置为 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
我正在尝试在 Linux 上启用和禁用 C++ 中 gcov 的编译标志。我不想一直设置 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。因此,正在生成 none 个 gcov .gcno/.gcda 文件。有人看到我做错了什么吗?
您是否将环境变量设置为 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