簡體   English   中英

如何使Qt生成的makefile沒有qmake依賴

[英]How to make makefile generated by Qt without qmake dependency

我在Linux中使用Qt Creator創建非Qt c ++項目。 我發現Qt創建者會為我創建一個makefile。 我想將所有項目移到沒有任何qt或qmake的計算機中,但是我自己不能真正編輯makefile。 正如我在Google上搜索到的那樣,有人說添加CONFIG-= qt標志可以創建沒有任何qt組件的純g ++ makefile,但實際上不能。

我項目中的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類的東西,一堆-fsanitize=選項需要sanitize.conf之類的-fsanitize= ,依此類推。

因此,這是Makefile本身依賴的文件列表(用於自動重新生成等)。 當然,如果您不想在qmake的幫助下重新生成Makefile,則可以一次刪除所有這些行。

您抱怨說,盡管您的.pro中有CONFIG-=qt ,但該列表中仍然有一堆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) ,它甚至可以工作-當然,沒有任何形式的保證;-) 。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM