• qmake 手册:qmake 入门


    官方链接:https://doc.qt.io/qt-6/qmake-tutorial.html

    qmake 入门

    本教程教您 qmake 的基础知识。本手册中的其他主题包含有关使用 qmake 的更多详细信息。

    从简单开始

    假设您刚刚完成了应用程序的基本实现,并且创建了以下文件:

    • hello.cpp
    • hello.h
    • main.cpp

    您将在 Qt 发行版的 examples/qmake/tutorial 目录中找到这些文件。关于应用程序的设置,您唯一知道的另一件事是它是用 Qt 编写的。首先,使用您最喜欢的纯文本编辑器在 examples/qmake/tutorial 目录中创建一个名为 hello.pro 的文件。 您需要做的第一件事是添加告诉 qmake 关于您的开发项目的源文件和头文件的行。

    我们将首先将源文件添加到项目文件中。为此,您需要使用 SOURCES 变量。只需开始一个新行SOURCES +=并将 hello.cpp 放在它之后。像下面这样:

    SOURCES += hello.cpp
    
    • 1

    我们对项目中的每个源文件重复此操作,直到得到以下内容:

    SOURCES += hello.cpp
    SOURCES += main.cpp
    
    • 1
    • 2

    如果您更喜欢使用类似 Make 的语法,那么您可以一次性使用换行符转义所有文件,如下所示:

    SOURCES = hello.cpp \
              main.cpp
    
    • 1
    • 2

    现在源文件已在项目文件中列出,必须添加头文件。它们的添加方式与源文件完全相同,只是我们使用的变量名称是 HEADERS

    完成此操作后,您的项目文件应如下所示:

    HEADERS += hello.h
    SOURCES += hello.cpp
    SOURCES += main.cpp
    
    • 1
    • 2
    • 3

    目标名称是自动设置的。它与项目文件名相同,但带有适合平台的后缀。例如,如果项目文件被叫作hello.pro,则目标名称在 Windows 上为 hello.exe,在 Unix 上为 hello。如果要使用不同的名称,可以在项目文件中设置:

    TARGET = helloworld
    
    • 1

    完成的项目文件应如下所示:

    HEADERS += hello.h
    SOURCES += hello.cpp
    SOURCES += main.cpp
    
    • 1
    • 2
    • 3

    您现在可以使用 qmake 为您的应用程序生成 Makefile。在命令行的项目目录中,键入以下内容:

    qmake -o Makefile hello.pro
    
    • 1

    注意:如果您通过包管理器安装 Qt,则二进制文件可能是 qmake6.

    然后键入 make 或 nmake 取决于您使用的编译器。

    对于 Visual Studio 用户,qmake 还可以生成 Visual Studio 项目文件。例如:

    qmake -tp vc hello.pro
    
    • 1

    使应用程序可调试

    应用程序的发布版本不包含任何调试符号或其他调试信息。在开发过程中,生成具有相关信息的应用程序的调试版本很有用。这很容易通过添加 debug 到项目文件中的 CONFIG 变量来实现。

    例如:

    CONFIG += debug
    HEADERS += hello.h
    SOURCES += hello.cpp
    SOURCES += main.cpp
    
    • 1
    • 2
    • 3
    • 4

    像以前一样使用 qmake 生成 Makefile。现在,在调试环境中运行应用程序时,您将获得有关应用程序的有用信息。

    添加平台特定的源文件

    经过几个小时的编码,您可能已经开始着手应用程序的特定于平台的部分,并决定将平台相关的代码分开。因此,您现在有两个新文件要包含到您的项目文件中:hellowin.cpp 和 hellounix.cpp. 我们不能只将这些添加到 SOURCES 变量中,因为这会将两个文件都放在 Makefile 中。因此,我们需要在这里做的是使用一个作用域,该作用域将根据我们正在构建的平台进行处理。

    为 Windows 添加平台相关文件的简单作用域如下所示:

    win32 {
        SOURCES += hellowin.cpp
    }
    
    • 1
    • 2
    • 3

    在为 Windows 构建时,qmake 添加 hellowin.cpp 到源文件列表中。在为任何其他平台构建时,qmake 会简单地忽略它。现在剩下要做的就是为 Unix 特定文件创建一个作用域。

    完成后,您的项目文件应如下所示:

    CONFIG += debug
    HEADERS += hello.h
    SOURCES += hello.cpp
    SOURCES += main.cpp
    win32 {
        SOURCES += hellowin.cpp
    }
    unix {
        SOURCES += hellounix.cpp
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    像以前一样使用 qmake 生成 Makefile。

    如果文件不存在则停止 qmake

    如果某个文件不存在,您可能不想创建 Makefile。我们可以使用 exists() 函数检查文件是否存在。我们可以使用 error() 函数停止 qmake 的处理。这与作用域的工作方式相同。只需将作用域条件替换为函数即可。检查名为 main.cpp 的文件如下所示:

    !exists( main.cpp ) {
        error( "No main.cpp file found" )
    }
    
    • 1
    • 2
    • 3

    该 ! 符号用于否定测试。也就是说,如果文件存在 exists( main.cpp ) 为真,如果文件不存在 !exists( main.cpp ) 则为真。

    CONFIG += debug
    HEADERS += hello.h
    SOURCES += hello.cpp
    SOURCES += main.cpp
    win32 {
        SOURCES += hellowin.cpp
    }
    unix {
        SOURCES += hellounix.cpp
    }
    !exists( main.cpp ) {
        error( "No main.cpp file found" )
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    像以前一样使用 qmake 生成一个 makefile。如果您临时重命名 main.cpp,您将看到该消息并且 qmake 将停止处理。

    检查多个条件

    假设您使用 Windows,并且希望能够在命令行上运行应用程序时看到 qDebug() 输出的语句。要查看输出,您必须使用适当的控制台设置构建应用程序。我们可以很容易地将 console 加在 CONFIG 行上包含在 Windows 上的 Makefile 中。但是,假设我们只想在 Windows 上运行并且 debug 已经在 CONFIG 上时添加该 CONFIG 行。这需要使用两个嵌套作用域。首先创建一个作用域,然后在其中创建另一个。将要处理的设置放在第二个作用域内,如下所示:

    win32 {
        debug {
            CONFIG += console
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    嵌套作用域可以使用冒号连接在一起,因此最终的项目文件如下所示:

    CONFIG += debug
    HEADERS += hello.h
    SOURCES += hello.cpp
    SOURCES += main.cpp
    win32 {
        SOURCES += hellowin.cpp
    }
    unix {
        SOURCES += hellounix.cpp
    }
    !exists( main.cpp ) {
        error( "No main.cpp file found" )
    }
    win32:debug {
        CONFIG += console
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    您现在已经完成了 qmake 的教程,并准备为您的开发项目编写项目文件吧。

  • 相关阅读:
    C语言日记 36 类的组合
    递归为什么这么难?一篇文章带你了解递归
    Ghidra逆向工具配置 MacOS 的启动台显示(Python)
    C# 第五章『面向对象』◆第6节:类的继承
    RedisStack部署/持久化/安全/与C#项目集成
    Electron笔记
    m分集2跳OFDM系统中基于功率分配和子载波配对算法的信道容量matlab仿真
    深度学习推理框架汇总
    Paddle炼丹炉炸了Unexpected BUS error encountered in DataLoader worker
    php反序列化+题
  • 原文地址:https://blog.csdn.net/canpool/article/details/126312331