Makefile.am /配置.ac条件环境变量检查
Makefile.am/Configure.ac Conditional Environment Variable Check
我试图在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
相关文章:
- 枚举环境变量的惯用C++14/C++17方法
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 定义C++新的环境变量并在 bat 文件中使用它
- docker 构建失败:无法设置环境变量
- 如何在不传递命令行参数的情况下在 c++ 中设置环境变量
- C++环境变量
- 在编译时为运行时设置环境变量
- 如何使用可视化代码和平台IO将环境变量注入CPP文件?
- 访问 PlatformIO 中的外部环境变量
- WSL 看不到环境变量
- 如何在提升构建中设置环境变量以进行提升单元测试框架?
- 注册 TBB 的环境变量
- 如何设置Qt应用程序以使用类Unix系统的实际环境变量?
- CMake 看不到SDL2_PATH环境变量 (Windows)
- 跨语言共享环境变量
- 什么是运行英特尔线程构建模块的 XCode 8 环境变量
- 在运行时将更改的环境变量应用于 QApplication
- 在C++程序中找不到环境变量 UID
- 我可以定义一个环境变量并在条件编译中使用它吗?
- Makefile.am /配置.ac条件环境变量检查