【发布时间】:2014-04-07 12:22:45
【问题描述】:
我正在使用带有 ncurses 的 C 应用程序为 CLI 工作,该 CLI 使用自动工具进行构建。除了实际的应用程序之外,还有一个测试框架(cutter)和一些预处理器常量,可以启用或禁用某些功能(例如,有一个常量 WINDOW 与所有 ncurses 窗口接壤 - 对于管理窗口布局很有用)。
当然,其中一些常量可以在编译时手动指定(即 make),但我希望有 2 个构建目标:调试和发布。另外,cutter有问题(配置检查它,如果要使用它应该会发生这种情况,但我不能要求普通用户安装cutter来编译)。因此,我在考虑以下设置:创建一个启用测试的配置标志(默认情况下禁用)和 2 个 make 目标(make 创建发布版本并进行调试,即调试版本)。这个工作流程是否正确或有更好的方法来做到这一点?
【问题讨论】:
-
很多人使用like this 方法而不是单独的调试/发布版本。这通常允许在运行时性能和发布后调试之间进行很好的权衡。
-
嗯,这与 -g 标志无关,因为它适用于应用程序开发和调试中使用的部分代码(例如删除一些检查以使应用程序的测试更多更容易,窗口周围的边框可以看到你在做什么等等)。这些由预处理器指令#ifdef 和#ifndef 处理,通过某些符号常量的存在或不存在来切换。
-
您不能要求产品的普通用户安装切割机,但您绝对可以要求开发人员这样做。用户应该安装一个预先构建的二进制文件,并且不需要处理任何这些。 “开发人员”的一个相当宽松的定义可以包括任何想要运行“make check”的人,因此要求该人安装另一个工具是完全合理的,但也很容易简单地检查是否安装了切割器并缩小必要时进行测试(带有类似“测试不完整:请安装切割机”的警告)
标签: c linux autotools c-preprocessor