qt .pro文件 qmake编译过程
迪丽瓦拉
2024-06-01 03:10:37
0
  • #:注释一行

  • QT:此项目中使用的Qt modules列表

  • CONFIG:此项目中使用的配置选项

  • TARGET:目标输出文件的名字

  • TEMPLATE:当生成二进制文件时项目的模版,例如app,lib

  • 平台下使用

    windows {
    SOURCES += SysInfoWindowsImpl.cpp
    HEADERS += SysInfoWindowsImpl.h
    }
    linux {
    }
    unix {
    }
    macx {
    }
    
  • 嵌套使用

    windows {SOURCES += SysInfoWindowsImpl.cppHEADERS += SysInfoWindowsImpl.hdebug { # 等价于if (windows && debug)SOURCES += DebugClass.cppHEADERS += DebugClass.h}
    }
    
  • 条件判断

    windows|unix {SOURCES += SysInfoWindowsAndLinux.cpp
    } else:macx {SOURCES += SysInfoMacImpl.cpp
    } else {SOURCES += UltimateGenericSources.cpp
    }
    

操作符说明

  • =:给变量赋值
  • +=:给变量列表添加值
  • -=:给列表移除值
  • *=:仅在该值不存在的情况下才添加到列表中
  • ~=:用指定的值替换符合正则表达式的任意值

函数

  • 定义一个变量,并使用message()函数,此函数编译时会发出信息在编译输出框

    COMPILE_MSG = "Compiling on"
    windows {
    # 编译框输出 Project MESSAGE: Compiling on windowsmessage($$COMPILE_MSG windows) 
    }
    
  • error(string):显示字符串并立即退出编译

  • exists(filename):测试是否存在filename

  • include(filename):将其它.pro文件添加进来


qmake编译过程

  • 蓝色方框是命令,波浪形方框是文件
    在这里插入图片描述

1)【qmake】命令与.pro文件一起执行,在项目文件基础上生成一个Makefile文件

2)【make】命令调用其他命令来生成中间文件

3)【uic】命令全称User Interface Compiler。此命令会将所有的.ui文件生成相关的ui_*.h头文件以便能在自己对应的.cpp文件引用

4)【moc】命令接收每一个包含Q_OBJECT宏的类(与超类QObject配对),并生成中间moc_*.cpp文件,里面包含了信号槽工作所需的一切

5)【g++】命令被执行,将所有源文件和中间的moc文件编译成.o文件,最后链接成二进制可执行程序

相关内容