Makefile.am /配置.ac条件环境变量检查

Makefile.am/Configure.ac Conditional Environment Variable Check

本文关键字:条件 环境变量 检查 ac 配置 am Makefile      更新时间:2023-10-16

我试图在Linux上的c++中启用和禁用gcov的编译标志。我不想在任何时候都设置gcov标志。我只希望在测试软件时设置它们。我正在检查的环境变量名为TESTENABLED。

在我的配置。我在ac文件中有以下行:

AM_CONDITIONAL([ENABLEGCOV],[test x$TESTENABLED = xtrue])

在我的Makefile中。我有以下几行:

if ENABLEGCOV
AM_CXXFLAGS = -Wall -fPIC -fprofile-arcs -ftest-coverage
else
AM_CXXFLAGS = -Wall
endif

然而,当我构建我的程序时,我注意到它没有正确设置AM_CXXFLAGS。所以没有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