qt .pro文件 qmake编译过程

  • #:注释一行

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

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

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

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

  • 平台下使用

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

    windows {
        SOURCES += SysInfoWindowsImpl.cpp
        HEADERS += SysInfoWindowsImpl.h
        debug { # 等价于if (windows && debug)
            SOURCES += DebugClass.cpp
            HEADERS += 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 windows
        message($$COMPILE_MSG windows) 
    }
    
  • error(string):显示字符串并立即退出编译

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

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


导出导入库

  • DEFINES += GALLERYCORE_LIBRARY:编译标志,让编译器知道何时应该导入或导出库的符号
  • gallery-core_global.h:Qt提供的语法糖,用来减轻跨平台库的痛苦
  • Q_DECL_EXPORT:我们正在编译library库
  • Q_DECL_IMPORT:我们正在使用共享库编译你的应用程序
  • GALLERYCORE_EXPORT宏使符号变为pubic可见

  • 静态库:1)增加编译时间。每当库有任何修改,就要重新编译。2)更紧密的耦合。多个应用程序不能链接到此库,每一个都必须嵌入此静态库

  • LIBS:此变量是链接库到这个工程。-L提供路径,-l提供库名字

    LIBS += -L<pathToLibrary> -l<libraryName>
    
  • 指示库头文件的位置

    INCLUDEPATH += $$PWD/../gallery-core
    DEPENDPATH += $$PWD/../gallery-core
    
  • $$PWD:此变量表示当前.pro文件的绝对路径

  • $$OUT_PWD:此变量表示输出目录的绝对路径

  • depends:表示gallery-core必须在gallery-desktop之前编译built

    gallery-desktop.depends =  gallery-core
    

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文件,最后链接成二进制可执行程序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值