简而言之,我想将应用程序的类型更改为win32 app
,然后,我在中使用了以下命令.pro file
CONFIG -=windows
QMAKE_LFLAGS += $$QMAKE_LFLAGS_WINDOWS
使用前面的命令后,应用程序可以正常工作。
但问题是我不知道这些命令的每个命令的含义。
任何人都可以解释这些命令的每个命令吗?
让我们看看CONFIG -= windows
。
qmake 手册节选:CONFIG 变量
配置
CONFIG 变量指定项目配置和编译器选项。这些值将被 qmake 内部识别并具有特殊含义。它们如下。
[...]
以下选项定义应用程序/库类型:
windows - 目标是Win32 窗口应用程序(仅限应用程序)。正确的包含路径、编译器标志和库将自动添加到项目中。
控制台 - 目标是Win32 控制台应用程序(仅限应用程序)。正确的包含路径、编译器标志和库将自动添加到项目中。
手册的另一个摘录:操作员
运营商
在许多项目文件中,赋值 (=) 和附加 (+=) 运算符可用于包含有关项目的所有信息。典型的使用模式是将值列表分配给变量,并根据各种测试的结果附加更多值。由于 qmake 使用默认值定义某些变量,因此有时需要使用删除 (-=) 运算符来过滤掉不需要的值。
-= 运算符从变量的值列表中删除一个值:
定义 -= USE_MY_STUFF
上面的行从预处理器定义列表中删除了 USE_MY_STUFF 以放入生成的 Makefile 中。
因此,CONFIG -= windows
您windows
将从 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_CONSOLE
或QMAKE_LFLAGS_WINDOWS
。但是,您QMAKE_LFLAGS
通过添加 which 的值直接进行了更改,QMAKE_LFLAGS_WINDOWS
这很奇怪,因为它包含用于构建 Win32 窗口应用程序的链接标志,并且您声明CONFIG -= windows
您不想拥有 Win32 窗口应用程序。
CONFIG
告诉 qmake 您正在为特定平台构建,QMAKE_LFLAGS
指定您需要的平台特定库。