【问题标题】:Remove unnecessary targets from Makefile从 Makefile 中删除不必要的目标
【发布时间】:2011-11-10 09:39:11
【问题描述】:

是否有一种自动化的方法可以从 Makefile 中删除不必要的目标? 我使用了 qmake 生成的,但我要在没有 QT 的机器上运行它们。由于 qmake 生成的 Makefile,它包含 QT 相关的目标,例如 1) "Makefile:" that call "$(QMAKE)" 2) "qmake:" ;以及依赖项中的QT文件,如“/usr/share/qt4/mkspecs/common/g++.conf”等。

Makefile: my_project.pro /usr/share/qt4/mkspecs/linux-g++/qmake.conf /usr/share/qt4/mkspecs/common/g++.conf \
    /usr/share/qt4/mkspecs/common/unix.conf \
...
$(QMAKE) -spec /usr/share/qt4/mkspecs/linux-g++ -unix CONFIG+=debug -o Makefile my_project.pro
...
qmake:  FORCE
@$(QMAKE) -spec /usr/share/qt4/mkspecs/linux-g++ -unix CONFIG+=debug -o Makefile my_project.pro

我尝试手动删除这些目标,然后可以成功地用它们编译项目。问题是是否有简单的自动化方式?

【问题讨论】:

    标签: qt makefile qmake


    【解决方案1】:

    不,没有。如果您使用的是 qmake,则意味着您想在安装了 qt 的计算机上使用它。据我所知,您不应与 Makefile 共享源代码,而应仅与 .pro 文件共享源代码。任何为自己编译它的人都应该在 make 之前调用 qmake(如果您使用的是视觉,则应该调用 'nmake')。

    如果你根本不使用 qt,而只使用 qmake 来生成 Makefile,那么还有其他选择(尽管我承认没有 qmake 简单),例如 cmake 或 autoconf/automake。

    【讨论】:

    • "如果您使用的是qmake,则表示您想在安装了qt的计算机上使用它。"。不,它没有。我正在将 qtcreator(以及因此 qmake)用于独立的 C++ 项目。工作正常 - 除了无法删除上面提到的Makefile 目标问题..
    • 所以你只使用 qmake 作为 Makefile 生成器?我认为这不是 qmake 的预期用途。因此,我不希望对它有任何支持——即使它只需要 OP 描述的简单修改。还有其他用于生成 Makefile 的工具(即自动工具)。如果与您共享代码的人(并且 - 可能 - 不是您的 .pro 文件)想要更改您的项目的某些内容怎么办?添加或删除源或只是更改一些编译标志成为一场噩梦......
    猜你喜欢
    • 1970-01-01
    • 2014-06-19
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-16
    • 1970-01-01
    相关资源
    最近更新 更多