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

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在进行Qt的.pro文件交叉编译时,可以按照以下步骤进行操作: 1. 首先,使用git命令下载Qt源码库。可以使用以下命令进行下载: ``` cd ~ git clone git://code.qt.io/qt/qt5.git -b 5.9 ``` 2. 进入下载的qt5目录,并执行init-repository命令进行初始化: ``` cd qt5/ ./init-repository ``` 3. 如果不想使用git下载源码库,可以使用qt5.tar.gz文件进行编译。将qt5.tar.gz文件解压到指定目录,可以使用以下命令: ``` cd rpi tar zxvf qt5.tar.gz -C ~/ ``` 4. 在.pro文件中使用include(filename)语法将其他.pro文件添加进来,以便进行交叉编译。 5. 在.pro文件中使用DEFINES += GALLERYCORE_LIBRARY来定义编译标志,以告诉编译器何时应该导入或导出库的符号。 6. 在.pro文件中使用Qt提供的语法糖gallery-core_global.h,使用Q_DECL_EXPORT宏来使符号变为public可见,以便在编译库时使用。 7. 如果需要编译静态库,需要注意以下两点: - 静态库会增加编译时间,每次库有修改都需要重新编译。 - 静态库会更紧密地耦合,每个应用程序都必须嵌入此静态库,而不能链接到此库。 8. 在.pro文件中可以定义变量,并使用message()函数输出编译时的信息。例如,在Windows平台上编译时可以使用以下代码: ``` COMPILE_MSG = "Compiling on" windows { # 编译框输出 Project MESSAGE: Compiling on windows message($$COMPILE_MSG windows) } ``` 这些步骤可以帮助你进行Qt的.pro文件交叉编译。请根据你的具体需求和环境进行相应的配置和操作。 #### 引用[.reference_title] - *1* [树莓派+Qt5.9.9 交叉编译](https://blog.csdn.net/yutao1131/article/details/121135192)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [qt .pro文件 qmake编译过程](https://blog.csdn.net/qq_33373173/article/details/129445702)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值