> For the complete documentation index, see [llms.txt](https://zhangzhen.gitbook.io/qmake-learn/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://zhangzhen.gitbook.io/qmake-learn/yun-hang-qmake.md).

# 运行qmake

qmake可以在命令行中指定各种选项来运行，这可以让我们在构建项目的过程中进行微调，并提供有用的诊断信息，而且还可以指定构建的目标平台。

## 命令语法

qmake采用下面简单的形式来在命令行中运行：

```
qmake [mode] [options] files
```

## 操作模式

qmake支持两种不同的操作模式。在默认模式中qmake使用项目文件当中的信息来生成相应的Makefile文件，但其实qmake也可以生成项目文件。如果你想显式的设置操作模式，你必须在所有选项之前来指定它，模式可以用下面的两个值指定。

```
>-makefile
qmake将会生成一个Makefile文件
>-project
qmake将会生成一个项目文件
注意：添加的文件很可能需要二次编辑，比如添加QT变量来加载模块
```

你可以使用选项来指定常规的或者特定于模式的设置。Makefile以及project模式的相关选项的说明将在各自的部分分别进行说明。

## 文件

文件参数是一个或多个由空格分隔的项目文件名。

## 常规选项

qmake可以在命令行上指定各种选项，以便qmke在自定义构建过程覆盖平台的默认选项。下面的基本选项会在使用qmake的时候提供相关帮助，指定qmake输出文件的位置，以及控制将调试信息输出到控制台的优先级。

```
>-help
qmake会浏览相关的功能信息 ，并给出一些有用帮助信息。
>-o file
qmake输出将被定向到文件。如果未指定此选项，qmake将尝试为其输出指定一个合适的文件名，具体取决于其运行模式，如果指定了‘-’，则输出将指向标准输出。
>-d
qmake会输出调试信息。多次添加 -d会增加冗长度。
```

项目的模板选用通常由TEMPLATE变量在项目文件(.pro)文件指定，你也可以在运行qmake的时候添加下面的选项来修改或覆盖项目文件当中的相关设置。

```
>-t tmpl
qmake将会用tmpl覆盖TEMPLATE变量中的所有设置，但仅仅在.pro文件被运行之后，即不会修改项目文件。
>-tp prefix
qmake捡回将会为TEMPLATE变量添加前缀。
```

可以对警告信息的优先级进行微调以帮助你找出项目文件当中出现的问题。

```
>-wall
qmake将会列出所有警告信息。
>-Wnone
qmake将不会生成任何警告信息
>-Wparser
qmake将仅生成解析器警告信息。这会提醒你注意在解析项目文件的时候常见的陷阱和潜在的问题。
>-Wlogic
qmake将会警告你项目文件中常见的陷阱和潜在的问题。例如，qmake会提示多个文件列表中的文件和其他文件的缺失。
```

## Makefile模式选项

```
qmake -makefile [options] files
```

在Makefile模式下，qmake将会生成一个用于构建项目的Makefile。此外在该模式下使用下面的选项可以影响项目文件的生成方式。

```
>-after
在指定文件之后，qmake将会处理在命令行上给出的参数。
>-nocache
qmake将会忽略.qmake.cache文件。
>-nodepend
qmake将不会生成任何依赖信息
>-cache file
qmake将会使用file作为缓存文件，并忽略其他.qmake.cache文件
>-spec spec
qmake将会使用spec作为平台的和编译器信息的路径，而忽略QMAKESPEC变量的信息。
```

你也可以在命令行上将参数传递给qmake，这些参数要写在被指定的文件之前。例如，下面的命令将生成一个基于test.pro文件的Makefile文件。

```
qmake -makefile -o Makefile "CONFIG+=test" test.pro
```

然而一些指定的选项会被其默认选项所忽略。

```
qmake "CONFIG+=test" test.pro
```

如果你确定希望在指定文件后再处理相关选项，那么你可以使用-after选项。在指定此选项时，-after选项后在命令行上的参数都将被挂起，直到指定的文件被解析为止。

## 项目模式选项

```
qmake -project [options] files
```

在project模式下，qmake将会生成一个项目文件。此外，你还可以在这个模式下使用如下几个选项。

```
>-r
qmake将会递归的查看支持的目录。
>-nopwd
qmake将不会查看你当前工作路径下的源代码。只会使用你指定的文件。
```

在这个模式下，文件参数可能是一系列的文件或者目录。如果指定的是一个目录，它就将会被添加到DEPENDPATH变量当中，目录下包含的文件也将被输出的项目文件包含。如果是一个文件，则会根据其扩展名添加到相应的变量当中。例如，UI文件会被添加到FORMS变量当中，c++文件将会被添加到SOURCES变量当中。

在这个模式下你也可以在命令行当中传递参数。如果这样做，这些参数将会被放在生成的项目文件的最后。


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://zhangzhen.gitbook.io/qmake-learn/yun-hang-qmake.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
