九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
qmake的使用

前言

在linux環(huán)境下進(jìn)行程序開(kāi)發(fā)時(shí),經(jīng)常需要使用makefile管理編譯代碼,特別是一些大型工程,而makefile工具語(yǔ)法晦澀深入研究較為困難,好在有很多工具可以自動(dòng)生成makefile,qmake就是其中的一種。

qmake特點(diǎn)

  • 為不同的平臺(tái)的開(kāi)發(fā)項(xiàng)目創(chuàng)建makefile。
  • 可以供給任何一個(gè)軟件項(xiàng)目使用,而不用管它是不是用Qt寫(xiě)的,盡管它包含了為支持Qt開(kāi)發(fā)所擁有的額外的特征。
  • qmake基于一個(gè)項(xiàng)目文件這樣的信息來(lái)生成makefile。項(xiàng)目文件可以由開(kāi)發(fā)者生成。
  • 不用修改項(xiàng)目文件,qmake也可以為Microsoft Visual Studio生成項(xiàng)目。

.pro文件說(shuō)明

  • 注釋-#

  • TEMPLATE 模板

    app - 建立一個(gè)應(yīng)用程序的makefile(默認(rèn)值)。
    vcapp - 建立一個(gè)應(yīng)用程序的Visual Studio項(xiàng)目文件。
    lib - 建立一個(gè)庫(kù)的makefile。
    vclib - 建立一個(gè)庫(kù)的Visual Studio項(xiàng)目文件。
    subdirs - 這是一個(gè)特殊的模板,它可以創(chuàng)建一個(gè)能夠進(jìn)入特定目錄,并且為一個(gè)項(xiàng)目文件生成。 makefile,并且為它調(diào)用make的makefile。

  • app模板

    使用該模板時(shí),下面這些qmake系統(tǒng)變量是被承認(rèn)的,在.pro文件中使用它們來(lái)為應(yīng)用程序指定特定信息。

    TARGET - 可執(zhí)行應(yīng)用程序的名稱。
    HEADERS - 應(yīng)用程序中的所有頭文件的列表。
    SOURCES - 應(yīng)用程序中的所有源文件的列表。
    DEFINES - 應(yīng)用程序所需的額外的預(yù)處理程序定義的列表。
    DESTDIR - 放置可執(zhí)行程序目標(biāo)的目錄。
    OBJECTS_DIR - 指定目標(biāo)文件(obj)的存放目錄。
    INCLUDEPATH - 應(yīng)用程序所需的額外的包含路徑的列表。
    DEPENDPATH - 應(yīng)用程序所依賴的搜索路徑。
    VPATH - 尋找補(bǔ)充文件的搜索路徑。
    LIBS - 包含要鏈接到project的庫(kù)的列表文件/ 路徑。用-l (library) 和 -L(library path)。
    FORMS - 應(yīng)用程序中的所有.ui文件(由Qt設(shè)計(jì)器生成)的列表。
    LEXSOURCES - 應(yīng)用程序中的所有l(wèi)ex源文件的列表。
    YACCSOURCES - 應(yīng)用程序中的所有yacc源文件的列表。
    DEF_FILE - 只有Windows需要:應(yīng)用程序所要連接的.def文件。
    RC_FILE - 只有Windows需要:應(yīng)用程序的資源文件。
    RES_FILE - 只有Windows需要:應(yīng)用程序所要連接的資源文件。
    QMAKE_LFLAGS-設(shè)置鏈接器flag參數(shù),會(huì)修改Makefile的LFLAGS選項(xiàng)。該參數(shù)包含了傳遞給連接器的一組通用的標(biāo)記。使用指定的QMAKE_LFLAGS的好處在于,能夠根據(jù)當(dāng)前編譯的不同配置選擇不同路徑下的依賴庫(kù)。QMAKE_LFLAGS += -Wl,-rpath=./sqlite3,這樣編譯生成的可執(zhí)行文件依賴的sqlite庫(kù)就會(huì)是./sqlite3

  • lib模板

    lib模板告訴qmake為建立一個(gè)庫(kù)而生成makefile。當(dāng)使用這個(gè)模板時(shí),除了app模板中提到系統(tǒng)變量,還有一個(gè)VERSION是被支持的。VERSION - 目標(biāo)庫(kù)的版本號(hào),比如2.3.1。

  • subdirs模板

    subdirs模板告訴qmake生成一個(gè)makefile,它可以進(jìn)入到特定子目錄并為這個(gè)目錄中的項(xiàng)目文件生成makefile并且為它調(diào)用make。在這個(gè)模板中只有一個(gè)系統(tǒng)變量SUBDIRS可以被識(shí)別。這個(gè)變量中包含了所要處理的含有項(xiàng)目文件的子目錄的列表。這個(gè)項(xiàng)目文件的名稱是和子目錄同名的,這樣qmake就可以發(fā)現(xiàn)它。例如,如果子目里是“myapp”,那么在這個(gè)目錄中的項(xiàng)目文件應(yīng)該被叫做myapp.pro。

  • CONFIG變量

    配置變量指定了編譯器所要使用的選項(xiàng)和所需要被連接的庫(kù)。

    下面這些選項(xiàng)控制著使用哪些編譯器標(biāo)志:

    release - 應(yīng)用程序?qū)⒁詒elease模式連編,如果“debug”被指定,它將被忽略。
    debug - 應(yīng)用程序?qū)⒁詃ebug模式連編。
    warn_on - 編譯器會(huì)輸出盡可能多的警告信息,如果“warn_off”被指定,它將被忽略。
    warn_off - 編譯器會(huì)輸出盡可能少的警告信息。
    debug_and_release : The project is built in both debug and release modes.
    debug_and_release_target: The project is built in both debug and release modes. TARGET is built into both the debug and release directories.
    build_all : If debug_and_release is specified, the project is built in both debug and release modes by default.

    下面這些選項(xiàng)定義了所要連編的庫(kù)/應(yīng)用程序的類型:

    qt - 應(yīng)用程序是一個(gè)Qt應(yīng)用程序,并且Qt庫(kù)將會(huì)被連接。
    thread - 應(yīng)用程序是一個(gè)多線程應(yīng)用程序。
    x11 - 應(yīng)用程序是一個(gè)x11應(yīng)用程序或庫(kù)。
    windows - 只用于app模板:應(yīng)用程序是一個(gè)Windows下的窗口應(yīng)用程序。
    console - 只用于app模板:應(yīng)用程序是一個(gè)Windows下的控制臺(tái)應(yīng)用程序。
    dll - 只用于lib模板:庫(kù)是一個(gè)共享庫(kù)(dll)。
    staticlib - 只用于lib模板:庫(kù)是一個(gè)靜態(tài)庫(kù)。
    plugin - 只用于lib模板:庫(kù)是一個(gè)插件,這將會(huì)使dll選項(xiàng)生效。

  • 不同平臺(tái)

    win32{SOURCES += xx.cpp}unix{SOURCES += xx.cpp}
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

.pro實(shí)例

TEMPLATE = lib #lib庫(kù),app可執(zhí)行工程TARGET = FuncCONFIG += console c++11 #C++11標(biāo)準(zhǔn)CONFIG -= qtDEFINES += IOS_64 #64位DEFINES += IOS_LINUX #Linux系統(tǒng)QMAKE_CXXFLAGS += -fPICQMAKE_LFLAGS_DEBUG += -L$$PWD/../../Bin/Debug/QMAKE_LFLAGS_DEBUG += -Wl,-rpath=../../Bin/Debug/QMAKE_LFLAGS_RELEASE += -L$$PWD/../../Bin/Debug/QMAKE_LFLAGS_RELEASE += -Wl,-rpath=../../Bin/Debug/LIBS += -ldl #要鏈接的庫(kù)LIBS += -lboost_threadrelease: CurConfig = Releasedebug:   CurConfig = DebugDESTDIR = ../../Bin/$$CurConfig/ #目標(biāo)文件的最終路徑,從pro文件開(kāi)始的相對(duì)路徑 OBJECTS_DIR = obj/$$CurConfig #.o文件的目錄SOURCES +=     ../FunPublic/ts1.cpp     ../FunPublic/ts2.cpp     ../FunPublic/ts3.cpp HEADERS +=     ../FunPublic/ts1.h     ../FunPublic/ts2.h     ../FunPublic/ts3.h unix {    target.path = /usr/lib    INSTALLS += target}INCLUDEPATH += /usr/local/cuda/include/QMAKE_LFLAGS += -sharedQMAKE_LFLAGS += -L$$PWD/../../Bin/Debug/QMAKE_LFLAGS += -L$$PWD/../../../../ThirdPartyLib/openrave-0.9/libQMAKE_LFLAGS += -Wl,-rpath=../../../../ThirdPartyLib/openrave-0.9/lib/#如果要添加鏈接庫(kù),只需要加載頭文件路徑和動(dòng)態(tài)庫(kù)路徑即可# INCLUDEPATH += /usr/local/cuda/include/ #相對(duì)路徑是相對(duì)工程文件pro的路徑# QMAKE_LFLAGS += -L$$PWD/../../../../ThirdPartyLib/openrave-0.9/lib #相對(duì)路徑是相對(duì)工程文件pro的路徑 編譯時(shí)靜態(tài)鏈接# QMAKE_LFLAGS += -Wl,-rpath=../../../../ThirdPartyLib/openrave-0.9/lib/ #相對(duì)路徑是相對(duì)工作路徑 運(yùn)行時(shí)動(dòng)態(tài)鏈接# QMAKE_LFLAGS += -Wl,-rpath=\\\$\$ORIGIN/jsoncpp #相對(duì)路徑是相對(duì)so庫(kù)路徑 運(yùn)行時(shí)動(dòng)態(tài)鏈接
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53

qmake實(shí)例

SOURCES = hello.cpp main.cppHEADERS = hello.hCONFIG += qt warn_on release
  • 1
  • 2
  • 3

生成makefile (makefile是根據(jù).pro文件參數(shù)生成的):
qmake -o Makefile hello.pro
qmake -t vcapp -o hello.dsp hello.pro
可以使用qmake -h查看具體的說(shuō)明

qmake生成makefile

  • 使用Qt編譯一次,查看是否有程序錯(cuò)誤鏈接錯(cuò)誤等

  • 若編譯無(wú)誤,則在pro目錄下使用qmake xx.pro -o Makefile這時(shí)便自動(dòng)生成了Makefile文件

  • 當(dāng)在其他平臺(tái)上make編譯時(shí),可能編譯出現(xiàn)如下錯(cuò)誤(如NanoPi)

    g++ -c -m64 -pipe -O2 -Wall -W   -I/usr/share/qt4/mkspecs/linux-g++-64 -I. -I/usr/include -o main.o main.cpp In file included from /usr/include/c++/4.8/thread:35:0,               from baseserver.h:10,               from server.h:4,               from rdatas.h:4,               from main.cpp:3:/usr/include/c++/4.8/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options.#error This file requires compiler and library support for the ^In file included from rdatas.h:4:0,               from main.cpp:3:server.h:20:14: warning: ‘void* ServerThread(void*)’ declared ‘static’ but never defined [-Wunused-function]static void *ServerThread(void *);            ^make: *** [main.o] Error 1
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
  • 根據(jù)提示需要添加-std=c++11,于是把該項(xiàng)添加到CXXFLAGS即可

    其實(shí)qmake生成的Makefile內(nèi)容很多無(wú)用的關(guān)于qt的項(xiàng)目可以刪除,最主要的是如下部分

    # 以下可以選擇性刪除CC            = gccCXX           = g++CXXFLAGS      = -pipe -O2 -Wall -W $(DEFINES) -std=c++11INCPATH       = -I/usr/share/qt4/mkspecs/linux-g++-64 -I. -I/usr/includeLINK          = g++LFLAGS        = -Wl,-O1LIBS          = $(SUBLIBS)   -ljson -lpthread OBJS        = main.o baseserver.o server.o baseuart.o rdatas.o# 這里自己添加總的編譯結(jié)果demo: $(OBJS)$(CXX) $(CXXFLAGS) $(OBJS) $(LIBS) -o $@ # 以下是copy的qmake自動(dòng)生成的compilemain.o: main.cpp rdatas.h     server.h     baseserver.h$(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o main.cpp baseserver.o: baseserver.cpp baseserver.h$(CXX) -c $(CXXFLAGS) $(INCPATH) -o baseserver.o baseserver.cppserver.o: server.cpp server.h     baseserver.h$(CXX) -c $(CXXFLAGS) $(INCPATH) -o server.o server.cppbaseuart.o: baseuart.cpp baseuart.h$(CXX) -c $(CXXFLAGS) $(INCPATH) -o baseuart.o baseuart.cpprdatas.o: rdatas.cpp rdatas.h     server.h     baseserver.h$(CXX) -c $(CXXFLAGS) $(INCPATH) -o rdatas.o rdatas.cppclean:rm *.o demo
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
  • 在不同平臺(tái)上運(yùn)行時(shí)可能有找不到文件或識(shí)別不了文件格式等錯(cuò)誤,刪除相關(guān)項(xiàng)目即可

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
QT工程中的文件介紹----*.pro文件
QT中PRO文件寫(xiě)法的詳細(xì)介紹
QT的pro文件編寫(xiě),高效簡(jiǎn)潔,,路徑設(shè)置 有空格 引入系統(tǒng)環(huán)境變量等
Qt工程文件(.pro文件)解讀
Qt Pro語(yǔ)法總結(jié)
QMake介紹以及使用
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服