QT配置文件详解

TEMPLATE=lib

TEMPLATE变量用于指定项目模板类型,其值可以是以下几种:

  • app:建立一个应用程序的makefile,这是默认值。
  • lib:建立一个库的makefile。
  • vcapp:建立一个应用程序的Visual Studio项目文件。
  • vclib:建立一个库的Visual Studio项目文件。
  • subdirs:创建一个能够进入特定目录并且为一个项目文件生成makefile并且为它调用make的makefile‌12。

TEMPLATE=lib时,编译后的输出将是一个静态库或动态库,而不是一个可执行文件‌



DEFINES+= EARTHWIDGETPLUGIN_LIBRARY

意思是定义了一个宏EARTHWIDGETPLUGIN_LIBRARY,这个宏可以在代码中用来控制条件编译或者其他一些需要根据是否定义了某个宏来改变代码行为的情况。当在Qt Creator中构建项目时,qmake会处理这个宏定义,并将其传递给编译器和链接器。



CONFIG += c++11

CONFIG += c++11用于指定使用C++11标准。这样做可以确保你的代码在编译时使用C++11的特性。

‌**C++11标准于2011年8月12日公布,并于2011年9月出版**‌。‌1

C++11是C++程序设计语言的一个重要更新,它包含了大量现代编程语言的特性,使得C++11看起来像一门新的语言。C++之父Bjarne Stroustrup曾表示:"C++11看起来像一门新的语言"。此外,C++11标准代替了原来的C++98C++03。各大主流编译器如VS2012g++clang等都在很大程度上支持C++11标准。



INCLUDEPATH

INCLUDEPATH 是 Qt 的 qmake 构建系统中使用的一个变量,它用于指定包含的头文件的搜索路径。

INCLUDEPATH += \ 是向 INCLUDEPATH 添加新的路径的语法。

INCLUDEPATH 可以在 .pro 文件中设置,用于指定额外的包含路径。

如果你有多个路径需要添加,你可以这样做:

INCLUDEPATH += /home/user/includes \
                /home/user/includes/anotherfolder

你也可以使用相对路径:

INCLUDEPATH += $$PWD/includes

在这里,$$PWD 是一个 qmake 的变量,它代表了 .pro 文件所在的目录。

如果你需要添加系统的路径,你可以使用 :

INCLUDEPATH += :/home/user/includes

注意,在路径前面的 : 是告诉 qmake 这是一个系统路径

最后,如果你需要添加第三方库的头文件路径,你可以这样做:

INCLUDEPATH += $$(SOME_ENVIRONMENT_VARIABLE)/include

在这里,SOME_ENVIRONMENT_VARIABLE 是一个环境变量,它指向了第三方库的安装目录。

总的来说,INCLUDEPATH 是一个很重要的 qmake 变量,它让你能够很容易地在你的项目中包含其他目录下的头文件。

INCLUDEPATH += . 包含当前目录,也就是.pro文件所在的目录

INCLUDEPATH += ./subdir 表示引用当前目录下的subdir子目录

Qt 会自动将项目文件所在目录添加到包含路径中,所以通常不需要显式添加当前目录。


LIBS+= -L

在Qt的.pro文件中,LIBS+= -L是用来添加库路径的。其中-L是指定库路径的参数,后面跟着库所在的目录。这样会在/usr/lib目录下查找libmylib.so动态库或者libmylib.a静态库,并添加到链接器中

LIBS += -L/home/user/libs LIBS后面添加库路径

LIBS += -L/home/user/libs/libmylib.so 只想添加特定的库文件,可以在-L后面添加库文件的全路径

LIBS += -L/usr/lib -lmylib 会在/usr/lib目录下查找libmylib.so动态库或者libmylib.a静态库,并添加到链接器中



Translations+=\

在Qt的项目(.pro)文件中,TRANSLATIONS+= 是一个用于指定翻译文件(.ts文件)的指令,这些文件用于实现Qt应用程序的国际化和本地化。

TRANSLATIONS += \
    path/to/your/translations/myapp_de.ts
复制代码
使用 \ 是为了跨越多行,如果你只有一个文件,也可以直接写在一行上。


qnx: target.path = /tmp/$${TARGET}/bin else: unix:!android: target.path = /o

QNX是一款实时操作系统(RTOS),广泛应用于嵌入式系统开发。它具有可靠性、稳定性和高性能的特点,因此被广泛应用于汽车、医疗设备、工业控制等领域。在嵌入式开发中,我们常常需要为QNX平台编译和构建代码。

qnx: target.path = /tmp/$${TARGET}/bin

这部分代码表示如果目标平台是QNX,则将目标路径设置为/tmp/$${TARGET}/bin。其中,$${TARGET}是一个变量,表示目标平台的名称。

举个例子,如果我们的目标平台是QNX,并且$${TARGET}的值为qnx6,那么最终的目标路径将是/tmp/qnx6/bin。在这个路径下,生成的可执行文件或库文件将被存放。

else: unix:!android: target.path = /o

这部分代码表示如果目标平台不是QNX,并且是Unix系统但不是Android系统,则将目标路径设置为/o。

举个例子,如果我们的目标平台是Linux或macOS,并且不是Android系统,那么最终的目标路径将是/o。在这个路径下,生成的可执行文件或库文件将被存放。

设置目标路径还有另外一种办法:

CONFIG(debug, debug|release) { DESTDIR = PWD/../output/debug } else { DESTDIR = PWD/../output/release }



INSTALLS+=target

INSTALLS是Qt的qmake系统中的一个变量,用于指定项目生成的目标文件、库文件、插件、qm文件(翻译文件)等应该被安装到哪些位置。

INSTALLS += [目标类型] [文件位置]

其中,目标类型可以是以下几种:

  • target:表示将文件安装到可执行文件所在的目录。

  • lib_target:表示将文件安装到库文件所在的目录。

  • bin_target:表示将文件安装到可执行文件所在的目录。

  • libexec_target:表示将文件安装到共享库执行文件所在的目录。

  • plugins:表示将插件安装到插件目录。

  • translations:表示将翻译文件安装到翻译目录。

  • declarative_source:表示将QML文件安装到QML源目录。

文件位置是相对路径,相对于安装目录的路径。

例如,如果你有一个Qt应用程序,你想将可执行文件安装到/usr/bin,那么你可以在.pro文件中添加以下代码:

INSTALLS += target /usr/bin 将可执行文件安装到/usr/bin

INSTALLS += lib_target /usr/lib 将库文件安装到/usr/lib

INSTALLS += plugins /usr/lib/qt5/plugins 将插件安装到/usr/lib/qt5/plugins

INSTALLS += translations /usr/share/qt5/translations 将翻译文件安装到某目录



win32:CONFIG

在 .pro 文件中加入以下定义即可。(它会自动在构建目录下生成一个tmp目录,分为release目录和debug目录,用于存放产生的中间文件)

win32:CONFIG(release, debug|release):{
    DESTDIR =$$PWD/release
    UI_DIR = $$PWD/tmp/release/ui
    MOC_DIR = $$PWD/tmp/release/moc
    OBJECTS_DIR = $$PWD/tmp/release/obj
    RCC_DIR = $$PWD/tmp/release/rcc
}
else:win32:CONFIG(debug, debug|release):{
    DESTDIR =$$PWD/debug
    UI_DIR = $$PWD/tmp/debug/ui
    MOC_DIR = $$PWD/tmp/debug/moc
    OBJECTS_DIR = $$PWD/tmp/debug/obj
    RCC_DIR = $$PWD/tmp/debug/rcc
}

build_type =
CONFIG(debug, debug|release) {
    build_type = debug
} else {
    build_type = release
}
 
DESTDIR     = $$build_type/out
OBJECTS_DIR = $$build_type/obj
MOC_DIR     = $$build_type/moc
RCC_DIR     = $$build_type/rcc
UI_DIR      = $$build_type/ui

FR:徐海涛(hunkxu)

相关推荐
API快乐传递者9 分钟前
Python爬虫:深入探索1688关键词接口获取之道
开发语言·爬虫·python
小王同学的C++24 分钟前
什么是 C++ 中的函数对象?它有什么特点?
开发语言·c++
zhangj112526 分钟前
Java部分新特性
java·开发语言
2401_8582861142 分钟前
102.【C语言】数据结构之用堆对数组排序
c语言·开发语言·数据结构·算法·
小爬虫程序猿1 小时前
如何利用python爬虫获得店铺的所有商品
开发语言·爬虫·python
API快乐传递者1 小时前
Java爬虫:深入探索1688接口的奥秘
java·开发语言·爬虫
从后端到QT1 小时前
C++ 11重点总结2
开发语言·c++
赔罪1 小时前
最大公约数和最小公倍数-多语言
java·c语言·开发语言·javascript·python·算法
SRC_BLUE_171 小时前
UPLOAD LABS | PASS 01 - 绕过前端 JS 限制
开发语言·前端·javascript
小狮子安度因2 小时前
Qt如何改变串口读取数据的频率
开发语言·数据库·qt