如何使QT生成的makefile无QMAKE依赖性
How to make makefile generated by Qt without qmake dependency
我在linux中使用QT创建者来制作我的非QT C 项目。我发现QT创造者会为我做一个制作。我想在没有任何QT或QMAKE的情况下将所有项目都移至计算机中,但是我自己无法真正编辑Makefile。当我Google时,有人说添加配置 - = QT标志可以使纯G makefile无需任何QT组件,但实际上不能。
我项目中的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选项需要gcc-base.conf
之类的内容,sanitize.conf
用于一堆-fsanitize=
选项,依此类推。
因此,这是您的makefile本身的文件列表取决于(用于自动再生等)。当然,如果您不打算在Qmake的帮助下再生Makefile,则可以一次删除所有这些行。
您抱怨说,尽管您的.pro中有 CONFIG-=qt
,但该列表中仍然提到了一堆qt_config.prf
和其他此类文件。这是正确的,但是QMAKE启动脚本以这种方式精确设计:首先,所有与QT相关的内容is 无条件预先配置;然后处理用户项目;然后,只有当CONFIG += qt
时,相关的QT东西最终才能启用。
只是为了娱乐,您可以弄乱Qmake启动代码:转到<prefix>/share/qt5/mkspecs/linux-g++-64
(或QMAKE_SPEC
IS);打开文件qmake.conf
;评论最后一个字符串:#load(qt_config)
。现在,您的CONFIG -= qt
项目应该可以处理,但是由此产生的Makefile将大大较小。但是价格是Qmake不能再做启用了QT的项目(好吧,实际上,您可以在.pro文件之上添加load(qt_config)
,甚至可以工作 - 当然没有任何形式的保证; - )。
- 针对遗留库的链接:来自预制makefile的-lgfortranbegin
- qmake:检测目标位宽(32 位或 64 位)
- 使用 Makefile 中的头文件编译 Pybind (不使用 cmake)
- 如何在使用Makefile构建后在cmd中运行该程序?
- Makefile g++ 使用命令行中的 -D 变量进行编译,默认值
- @CPPFLAGS@在 Makefile.in 中意味着什么?
- 如何在macOS上使用Makefile?
- Makefile 创建两个库 - 一个依赖于另一个
- 如何使QT生成的makefile无QMAKE依赖性
- qmake中添加了编译器选项的附加makefile目标
- 从bash而不是QtCreator执行时,QMake结果(makefile)不同
- 将 Makefile 包含在 qmake 中,继承属性
- qmake为win32-g++平台生成的Makefile包含unix命令
- 混合Qt qmake Makefile与自定义Makefile
- 改进由qmake生成的Makefile性能
- QtWebKit依赖缺少从qmake生成的Makefile
- 告诉Qmake如何生成Makefile
- 使用qmake生成makefile,它对MS VS有额外的依赖
- 将qmake文件转换为Unix makefile
- 交叉编译Ubuntu-Win7使用自定义Makefile代替qmake