我在linux中使用Qt creator来制作我的非Qt c ++项目.我发现Qt创建者会为我制作一个makefile.我想将所有项目移动到没有任何qt或qmake的计算机中,但我自己无法真正编辑makefile.当我谷歌有人说添加一个CONFIG - = 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
Run Code Online (Sandbox Code Playgroud)
并且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 \
.....
Run Code Online (Sandbox Code Playgroud)
现在,当我在终端中调用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启用项目了(实际上,你可以添加load(qt_config)
你的.pro文件,它甚至可以工作 - 当然没有任何形式的保证;-).
归档时间: |
|
查看次数: |
403 次 |
最近记录: |