【问题标题】:How to add custom targets in a qmake generated Makefile?如何在 qmake 生成的 Makefile 中添加自定义目标?
【发布时间】:2010-09-23 08:15:37
【问题描述】:

我使用 qmake 生成 Makefile,效果很好。但是,有时我想在生成的 Makefile 中添加更多内容,而无需编辑生成的 Makefile。

假设我们在源代码旁边有一个 Doxygen 目录,我需要在其中运行一些 doxygen 命令来生成文档。因此,将它作为主 Makefile 中的目标会很好。但是作为默认的 qmake 不理解这种额外的东西。

那么我可以添加一些内容来告诉 qmake 在“doxygen”目录中包含辅助 Makefile,或者直接在 qmake 配置中添加“额外目标”吗?


可能是这样的:

【问题讨论】:

    标签: makefile gnu-make qmake


    【解决方案1】:

    我正在处理同样的问题,到目前为止,我使用 QMAKE_EXTRA_TARGETS 变量来构建 docs 目标的成功有限,如下所示:

    docs.depends = $(SOURCES)
    docs.commands = (cat Doxyfile; echo "INPUT = $?") | doxygen -
    QMAKE_EXTRA_TARGETS += docs
    

    其中 Doxyfile 具有基本的 doxygen 配置设置减去我通过 'echo' 附加的 INPUT 符号,以仅包含 $(SOURCES) 中未满足的 Makefile 依赖项。

    这种方法似乎有效,因为它只为已更改的源文件重新创建文档,这很好,但我遇到了另一个问题,即我的 qmake 项目文件是使用 debug_and_release CONFIG 选项构建的,因此它会生成 Makefile、Makefile。调试和 Makefile.Release 但 SOURCES 仅在调试和发布 Makefile 中定义,这迫使我明确地执行 make -f Makefile.Debug docs 而不是更简单直观的 make docs 来构建文档。

    以前有人从 QMAKE_EXTRA_TARGETS 的角度解决过这个问题吗?

    【讨论】:

      【解决方案2】:

      这是一个老问题,但无论如何我都会添加一个答案。

      虽然在 qmake 中似乎没有对自定义规则的一般支持,但有一个简单的方法可以做到这一点,假设 GNU make。只需创建一个名为 makefile 的文件(全部小写):

      include Makefile
      
      re: clean
              $(MAKE) all
      

      最后两行是我的自定义规则。

      GNU make 将使用 makefile,而不是 Makefile,如果两者都存在的话。

      顺便说一句,re 规则解决了“make -j8 clean all”的问题。此命令将在完成清理之前开始执行所有操作。 re 规则保证了顺序性。

      【讨论】:

        【解决方案3】:

        这里提到的未记录选项怎么样http://paulf.free.fr/undocumented_qmake.html添加 doxygen 目标下可以找到以下内容:

        # custom target 'doc' in *.pro file
        dox.target = doc
        dox.commands = doxygen Doxyfile; \
            test -d doxydoc/html/images || mkdir doxydoc/html/images; \
            cp documentation/images/* doxydoc/html/images
        dox.depends =
        
        ...
        # somewhere else in the *.pro file
        QMAKE_EXTRA_UNIX_TARGETS += dox
        

        这是一个解决方案吗?

        【讨论】:

          【解决方案4】:

          This Qt blog post 非常明确地回答了 QMAKE_EXTRA_COMPILERS 和 QMAKE_EXTRA_TARGETS 的问题。

          很快我们就会被介绍给QBS.. 来自 Digia 和 Qt 社区的新 Qt Build Suite.. 希望它经过深思熟虑(就此而言,有据可查)。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2013-10-24
            • 2015-07-03
            • 1970-01-01
            • 2012-10-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多