2

简而言之,我想将应用程序的类型更改为win32 app,然后,我在中使用了以下命令.pro file

CONFIG -=windows
QMAKE_LFLAGS += $$QMAKE_LFLAGS_WINDOWS

使用前面的命令后,应用程序可以正常工作。
但问题是我不知道这些命令的每个命令的含义。

任何人都可以解释这些命令的每个命令吗?

4

2 回答 2

1

让我们看看CONFIG -= windows

qmake 手册节选:CONFIG 变量

配置

CONFIG 变量指定项目配置和编译器选项。这些值将被 qmake 内部识别并具有特殊含义。它们如下。

[...]

以下选项定义应用程序/库类型:

windows - 目标是Win32 窗口应用程序(仅限应用程序)。正确的包含路径、编译器标志和库将自动添加到项目中。

控制台 - 目标是Win32 控制台应用程序(仅限应用程序)。正确的包含路径、编译器标志和库将自动添加到项目中。

手册的另一个摘录:操作员

运营商

在许多项目文件中,赋值 (=) 和附加 (+=) 运算符可用于包含有关项目的所有信息。典型的使用模式是将值列表分配给变量,并根据各种测试的结果附加更多值。由于 qmake 使用默认值定义某些变量,因此有时需要使用删除 (-=) 运算符来过滤掉不需要的值。

-= 运算符从变量的值列表中删除一个值:

定义 -= USE_MY_STUFF

上面的行从预处理器定义列表中删除了 USE_MY_STUFF 以放入生成的 Makefile 中。

因此,CONFIG -= windowswindows将从 variable 的值列表中删除该值CONFIG。看起来windows是您平台上的默认值之一CONFIG,您需要删除该值。该值windows定义您的目标是 Win32 窗口应用程序。通过删除它,您声明您不想拥有 Win32 窗口应用程序。如果您的目标是 Win32 控制台应用程序,那么建议显式声明它:CONFIG += console.

现在让我们看看QMAKE_LFLAGS += $$QMAKE_LFLAGS_WINDOWS

手册摘录:QMAKE_LFLAGS

QMAKE_LFLAGS

此变量包含一组传递给链接器的通用标志。如果您需要更改用于特定平台或项目类型的标志,请为此目的使用专用变量之一,而不是此变量。

[...]

QMAKE_LFLAGS_WINDOWS

这仅在 Windows 上使用。

在构建 Windows GUI 项目(即非控制台应用程序)时,此变量包含链接标志。此变量的值通常由 qmake 或 qmake.conf 处理,很少需要修改。

这意味着如果您想更改标志,那么您应该更改QMAKE_LFLAGS_CONSOLEQMAKE_LFLAGS_WINDOWS。但是,您QMAKE_LFLAGS通过添加 which 的值直接进行了更改,QMAKE_LFLAGS_WINDOWS这很奇怪,因为它包含用于构建 Win32 窗口应用程序的链接标志,并且您声明CONFIG -= windows您不想拥有 Win32 窗口应用程序。

于 2013-09-09T07:49:15.007 回答
0

CONFIG告诉 qmake 您正在为特定平台构建,QMAKE_LFLAGS指定您需要的平台特定库。

于 2013-09-08T17:54:57.763 回答