如何使用qmake为单个源文件指定编译器标志?

cet*_*ron 7 c++ qt qmake qt5 qtcore

而其他源文件使用默认标志?我的一些源文件需要一些额外的C++预处理器定义.我使用Qt 5.我发现QMAKE_CXXFLAGS仅用于qmake项目的全局使用.

lpa*_*app 5

从理论上讲,这是在Qt源本身中进行GUI绘画的方式:

SOURCES_NOOPTIMIZE = somefile.cpp
nooptimize.name = nooptimize
nooptimize.input = SOURCES_NOOPTIMIZE
nooptimize.dependency_type = TYPE_C
nooptimize.variable_out = OBJECTS
nooptimize.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_IN_BASE}$${first(QMAKE_EXT_OBJ)}
nooptimize.commands = $${QMAKE_CXX} $(CXXFLAGS) -O0 $(INCPATH) -c ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} # Note the -O0
QMAKE_EXTRA_COMPILERS += nooptimize
Run Code Online (Sandbox Code Playgroud)

另请参阅文档中的高级用法如何添加编译器:

定制编译器规范支持以下成员:

会员介绍

命令 用于从输入生成输出的命令。

CONFIG 自定义编译器的特定配置选项。有关详细信息,请参见CONFIG表。

depend_command 指定用于生成输出依赖项列表的命令。

dependency_type指定输出的文件类型。如果它是已知类型(例如TYPE_C,TYPE_UI,TYPE_QRC),则将其视为这些文件类型之一。

取决于指定输出文件的依赖性。

输入 该变量指定应使用定制编译器处理的文件。

名称 有关自定义编译器正在执行的操作的描述。这仅在某些后端中使用。

输出 从自定义编译器创建的文件名。

output_function指定一个自定义qmake函数,该函数用于指定要创建的文件名。

variables 指示在pro文件中称为$(VARNAME)时,此处指定的变量已用$(QMAKE_COMP_VARNAME)替换。

variable_out 从输出创建的文件应添加到的变量。