qt pro文件说明


QT 中 pro 文件的写法 1. QT 常用变量说明 qmake 变量 含义 例子 #XXX 注释, 从“#”开始,到这一行结束 SOURCES 指定源文件 SOURCES = *.cpp 对于多源文件,可用空格分开 SOURCES = 1.cpp 2.cpp 3.cpp 或者每一个文件可以被列在一个分开的行里面,通 过反斜线另起一行 SOURCES = hello.cpp \ main.cpp 一个更冗长的方法是单独地列出每一个文件,就像 这样 SOURCES += hello.cpp SOURCES += main.cpp HEADERS 指定头文件 HEADERS = hello.h HEADERS += hello.h CONFIG 配置信息 CONFIG += qt warn_on release 编译器标志:  release - 应用程序将以 release 模式连编。如果“debug”被指定,它将被忽略。  debug - 应用程序将以 debug 模式连编。  warn_on - 编译器会输出尽可能多的警告信息。如果“warn_off”被指定,它将被忽略。  warn_off - 编译器会输出尽可能少的警告信息。 连编的库/应用程序的类型:  qt - 应用程序是一个 Qt 应用程序,并且 Qt 库将会被连接。  thread - 应用程序是一个多线程应用程序。  x11 - 应用程序是一个 X11 应用程序或库。  windows - 只用于“app”模板:应用程序是一个 Windows 下的窗口应用程序。  console - 只用于“app”模板:应用程序是一个 Windows 下的控制台应用程序。  dll - 只用于“lib”模板:库是一个共享库(dll)。  staticlib - 只用于“lib”模板:库是一个静态库。  plugin - 只用于“lib”模板:库是一个插件,这将会使 dll 选项生效。 TARGET 指定目标文件名 如果不设置该项目,目标名会被自动设置为跟项目 文件一样的名称 TARGET = filename INTERFACES 添加界面文件(ui) INTERFACES = filename.ui TEMPLATE 模块设置 app(生成应用程序,默认) subdirs(生成 makefile 文件编译 subdirs 指定的子 文件夹) lib(生成库文件) TEMPLATE = app DESTDIR 指定生成的应用程序放置的目录 DESTDIR += ../bin UI_DIR 指定 uic 命令将.ui 文件转化成 ui_*.h 文件的存放 UI_DIR += forms 的目录 RCC_DIR 指定 rcc 命令将.qrc 文件转换成 qrc_*.h 文件的存 放目录 RCC_DIR += ../tmp MOC_DIR 指定 moc 命令将含 Q_OBJECT 的头文件转换成标准.h 文件的存放目录 MOC_DIR += ../tmp OBJECTS_DIR 指定目标文件的存放目录 OBJECTS_DIR += ../tmp DEPENDPATH 程序编译时依赖的相关路径 DEPENDPATH += . forms include qrc sources INCLUDEPATH 头文件包含路径 INCLUDEPATH += . CODECFORSRC 源文件编码方式 CODECFORSRC = GBK FORMS 工程中包含的.ui 设计文件 FORMS += forms/painter.ui RESOURCES 工程中包含的资源文件 RESOURCES += qrc/painter.qrc win32{…} unix{…} 平台相关性处理 win32 { SOURCES += hello_win.cpp } LANGUAGE LANGUAGE = C++ exists !exists 如果一个文件不存在,停止 qmake !exists( main.cpp ) { error( "No main.cpp file found") } QT 加入库模块 QT += xml LIBS LIBS += -L folderPath //引入的 lib 文件的路径 -L:引入路径 LIBS += -lLibName //引入 lib 文件 -l : 引入 库 LIBS += -L"$(OutDir)" \ -L"$(SolutionDir)lib" \ -lopengl32 \ -lglu32 \ -lObjectDbAPI \ -lGraphicsLibD 2. qmake 高级概念 2.1 操作符 “=” 操作符 分配一个值给一个变量 “+=”操作符 向一个变量的值的列表中添加一个值 “-=”操作符 从一个变量的值的列表中移去一个值 “*=”操作符 仅仅在一个值不存在于一个变量的值的列表中的时候,把它添加进去 “~=”操作符 替换任何与指定的值的正则表达式匹配的任何值 DEFINES ~= s/QT_[DT].+/QT 2.2 检查多于一个的条件 两个嵌套的作用域写法: win32 { debug { CONFIG += console } } 嵌套的作用域可以使用冒号连接起来,像这样: win32:debug { CONFIG += console } 2.3 作用域 win32:thread { DEFINES += QT_THREAD_SUPPORT } else:debug { DEFINES += QT_NOTHREAD_DEBUG } else { warning("Unknown configuration") } 2.4 变量 除了系统变量,比如DEFINES、SOURCES和HEADERS,允许创建自己的变量,这样就可以在作用域中使用 它们了。创建自己的变量很容易,只要命名它并且分配一些东西给它。 例如: MY_VARIABLE = value 你也可以通过在其它任何一个变量的变量名前加$$来把这个变量的值分配给当前的变量。 例如: MY_DEFINES = $$DEFINESMY_DEFINES 访问系统变量,采用 $(VARNAME) 来引用。 例如:QTITAN_LIB_PATH = $(GLDRS)\ThirdPart\Qtitan\lib 2.5 函数 这里只举几个最常用的例子 contains( variablename, value) 如果value存在于一个被叫做variablename的变量的值的列表中,那么这个作用域中的设置将会被处理。例 如: contains( CONFIG, thread ) { DEFINES += QT_THREAD_SUPPORT } 表示: 如果thread存在于CONFIG变量的值的列表中时,那么QT_THREAD_SUPPORT将会被加入到DEFINES 变量的值的列表中。 exists( filename ) 如果指定文件存在,那么这个作用域中的设置将会被处理。例如: exists( /local/qt/qmake/main.cpp ) { SOURCES += main.cpp } 表示: 如果/local/qt/qmake/main.cpp存在,那么main.cpp将会被添加到源文件列表中。 注意可以不用考虑平台使用“/”作为目录的分隔符。 CONFIG(debug, debug|release) 判断第一个参数debug是否是后面参数集合(debug|release)中的激活状态。用于区分当前编译的是 debug版本还是realse版本。 比如下例: CONFIG += debug_and_release CONFIG(debug,debug|release) { unix|win32: LIBS += -lQtCored unix|win32: LIBS += -lQtGuid unix|win32: LIBS += -lQtNetworkd } else { unix|win32: LIBS += -lQtCore unix|win32: LIBS += -lQtGui unix|win32: LIBS += -lQtNetwork } 3. QMake 简单示例 1. TARGET = trialApp 2. TEMPLATE = app 3. 4. win32 { 5. CONFIG(debug, debug|release) { 6. LIBS += -L../trialLibA/debug 7. } else { 8. LIBS += -L../trialLibA/release 9. } 10. } 11. 12. INCLUDEPATH += ../trialLibA 13. LIBS += -ltrialLibA 14. 15. SOURCES += main.cpp\ 16. MainWindow.cpp 17. HEADERS += MainWindow.h 18. FORMS += MainWindow.ui 注意下面的写法是错误的, 1. win32 { 2. debug { 3. LIBS += -L../trialLibA/debug 4. } 5. release { 6. LIBS += -L../trialLibA/release 7. } 8. } 原因在于,Config允许多个选项(即使是互斥的)存在,但是只有一个是激活的,但是上述的写法只会 检查Config是否存在Debug Release选项是否存在,因此都会执行
还剩4页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

哈啤嘿嘿

贡献于2017-05-24

下载需要 10 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf