gpt4 book ai didi

c++ - 如何在没有qmake依赖的情况下由Qt生成makefile

转载 作者:搜寻专家 更新时间:2023-10-31 00:25:50 26 4
gpt4 key购买 nike

我在 Linux 中使用 Qt Creator 来制作我的非 Qt C++ 项目。我发现 Qt creator 会为我制作一个 makefile。我想将所有项目移动到没有任何 qt 或 qmake 的计算机中,但我不能真正自己编辑 makefile。正如我在谷歌上搜索的那样,有人说添加一个 CONFIG -= qt 标志可以制作一个没有任何 qt 组件的纯 g++ 生成文件,但实际上不是。

我项目中的pro文件是这样的:

QMAKE_LFLAGS += -no-pie
TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qt
INCLUDEPATH += /home/MyName/opencvBuild/install/include/opencv4/
LIBS += -L/home/MyName/opencvBuild/install/lib/ \
-lopencv_core \

SOURCES += \
main.cpp \
helloopencv.cpp

HEADERS += \
helloopencv.hpp

并且 makefile 生成数千个 Qt 依赖项,例如:

.....
###### Files

SOURCES = ../HelloOpenCV/main.cpp \
../HelloOpenCV/helloopencv.cpp
OBJECTS = main.o \
helloopencv.o
DIST = ../Qt/5.12.0/gcc_64/mkspecs/features/spec_pre.prf \
../Qt/5.12.0/gcc_64/mkspecs/common/unix.conf \
../Qt/5.12.0/gcc_64/mkspecs/common/linux.conf \
../Qt/5.12.0/gcc_64/mkspecs/common/sanitize.conf \
../Qt/5.12.0/gcc_64/mkspecs/common/gcc-base.conf \
.....

现在,当我在终端中调用 make 命令时,它会自动链接到 qmake。我不想在我的 makefile 中有任何“Qt”。我该怎么办?

最佳答案

这些不是“Qt”依赖项,而是“qmake”依赖项:它是 qmake 为生成 Makefile 而处理的文件列表。像 gcc-base.conf 这样的东西需要一些常见的 gcc 选项,sanitize.conf对于一堆 -fsanitize=选项等。

因此,它是您的 Makefile 本身所依赖的文件列表(用于自动重新生成等)。当然,如果您不打算在 qmake 的帮助下重新生成 Makefile,您可以一次删除所有这些行。

你提示尽管有 CONFIG-=qt在你的 .pro 中,还有一堆 qt_config.prf以及该列表中提到的其他此类文件。确实如此,但是 qmake 启动脚本正是这样设计的:首先,所有与 Qt 相关的东西都是无条件预配置;然后处理用户项目;然后,仅当CONFIG += qt ,相关的 Qt 东西终于启用了。

只是为了好玩,您可以弄乱 qmake 启动代码:转至 <prefix>/share/qt5/mkspecs/linux-g++-64 (或者你的 QMAKE_SPEC 是什么);打开文件 qmake.conf ;注释掉最后一个字符串:#load(qt_config) .现在你的 CONFIG -= qt项目应该可以处理,但生成的 Makefile 会小得多。但代价是 qmake 不能再做支持 Qt 的项目(好吧,事实上,你可以在你的 .pro 文件上添加 load(qt_config),它甚至可以工作 - 当然没有任何类型的保证;-)。

关于c++ - 如何在没有qmake依赖的情况下由Qt生成makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54666103/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com