- 编译生成debug版本动态库,文件末尾自动加上d结尾。
CONFIG(debug, debug|release) {
win32: TARGET = $$join(TARGET,,,d)
mac: TARGET = $$join(TARGET,,,_debug)
unix:!mac: TARGET = $$join(TARGET,,,d)
}
- QtCreator中pro项目文件格式说明。
名称 | 说明 |
---|---|
QT += core gui | 添加本项目中需要的模块,影响后面代码文件include的时候自动弹出下拉选择,如果pro文件没有引入该模块则无法自动语法提示,一般打包发布的时候对应动态库文件比如 Qt5Core.dll。 |
TARGET = xxx | 生成最后目标文件的名字,可以是可执行文件或者库文件。 |
TEMPLATE = app | 项目程序的生成模式,默认是app表示生成可执行文件程序,如果是动态库项目就是 TEMPLATE = lib。 |
CONFIG += qaxcontainer | 引入一些配置,在Qt4的时候还用来引入一些模块,其中有部分改成了QT += 方式引入,比如Qt5引入本地activex控件支持改成了QT += qaxcontainer。 |
DEFINES += xxx | 项目中自定义的一些定义,可以在代码文件中识别,通常用来定义一些不同平台的处理,根据项目需要自己定义任何标识。 |
HEADERS += head.h | 项目中用到的头文件,一般拓展名是.h,可以写在一行也可以分行写,分行要用 \ 斜杠结束。 |
SOURCES += main.cpp | 项目中用到的实现文件,一般拓展名是.cpp,可以写在一行也可以分行写,分行要用 \ 斜杠结束。 |
FORMS += Form.ui | 项目中用到的UI文件,一般拓展名是.ui,可以写在一行也可以分行写,分行要用 \ 斜杠结束。 |
RESOURCES += main.qrc | 项目中用到的资源文件,可以多个,写代码使用对应资源文件中的文件时候务必记得资源文件中的前缀。 |
LIBS += -L$$PWD/ -lavformat -lavcodec | 项目中编译时候链接依赖的库,一般是 .lib .a .dylib 文件,可以写在一行,省略文件名的lib打头部分,也可以分多行绝对路径和全名称。 |
DESTDIR += $$PWD/bin | 目标生成路径,$$PWD表示当前目录,一般建议生成的最终文件重定向到另外目录存放,好找,不然一堆临时文件在里面有时候文件太多好难找。 |
INCLUDEPATH += $$PWD/include | 工程需要的头文件,指定整个目录,写代码的时候找到的话会自动下拉。 |
DEPENDPATH += | 工程的依赖路径,用的比较少,一般涉及到引入链接库的时候可能需要。 |
include($$PWD/3rd.pri) | 引入pri模块文件,pri最大的好处就是分目录管理文件,通用的轮子模块可以放到一个目录下,然后用pri统一管理,可以给多个项目公用。 |
官方详细地址https://doc.qt.io/qt-5/qmake-variable-reference.html
-
如果发现之前编译正常,突然之间再编译就一直死循环的样子,停留在一行提示并疯狂不停的打印,或者提示文件时间在未来,这说明你很可能改过开发环境的时间(比如测试某个授权文件失效),导致有修改过文件的保存时间在未来,你只需要将时间调整回来,将最后更新时间不正确的代码文件重新保存下就行。Qt的增量编译是根据文件的最后修改时间来判定的,最后的修改时间比上一次的修改时间还要新则认为该文件被修改过,需要重新编译该文件。
-
Qt的构建套件一般是在安装Qt开发环境的时候自动设置的,当然也可以手动设置,手动设置的时候千万要注意编译器和Qt库必须一致,否则该构建套件是有问题的,千万不能乱设置,尤其是对构建套件命名的时候最好标明qt版本和编译器版本,最好也要一致,不要说名称叫msvc而编译器选择的确是mingw,这样尽管能正常使用该构建套件,但是会造成一种误解,还以为该套件是msvc的,其实里面是mingw的。有个qter说他的qt坏了,死活编译失败,远程一看,尼玛,构建套件名称写的qt_msvc2019 编译器选择的msvc2015(他电脑只安装了vs2015),qt库选择的mingw!差点狂扇自己八个耳光,太离谱了!
-
当你编译Qt程序发现编译通不过提示报错,而且报错提示在Qt的头文件的时候,不要去尝试着修改Qt头文件来编译通过,那样没用的,你使用的Qt的库是已经根据原始的头文件编译好的。如果报错提示在编译生成的临时的moc等文件,你也不要尝试去修改他,那个是临时文件,这次你改好了也许编译通过了,你重新编一下又覆盖了还是旧的错误。总之你要从源头(你的代码)找问题。
网友评论