Qt Creator qmake 集成了一个 HTML 预处理器

Qt Creator qmake intergrate a HTML preprocessor

我正在使用 c 预处理器根据 link 进行简单的#include 替换。以下是我的 preprocessor.pri

的片段
HEADERS += $$PWD/include/header.htm


PREPROCESS_FILES = $$PWD/staff/courses.htm
preprocess.name = preprocess-htm-includes
preprocess.CONFIG += no_link no_clean

for(htm, PREPROCESS_FILES):preprocess.commands = cpp  -E -x c -P $${htm} > $${htm}l

first.depends = $(first) preprocess 
export(first.depends)

首先我使用 for 循环,因为 ${QMAKE_FILE_NAME} 总是空白? 因为我不能使用 ${QMAKE_FILE_BASE} 我不确定如何将预处理器输出定向到 $$shadowed($$PWD)/.

其次,由于 CPP(C 预处理器)对注释和特殊字符的处理对于 HTML(尤其是无家可归者 ' 和 " 还有用于忽略注释的 -C 在输出中添加长 GNU 注释作为前缀html) 是否有任何与 Qt Creator 集成良好的通用预处理器我想将我所有的调试都放在 IDE 中。

(如果它做了 html/css/js 缩小和/或验证,则加分)

对于任何其他尝试执行相同操作的人来说,最简单的方法是在包含 source.htm 的每个文件夹中放置一个自定义 compiler.pri(示例如下),这样可以维护所有构建层次结构。注意*自定义编译器的名称和 SOURCES 变量必须是唯一的!

INCLUDEPATH += $$PWD
DEPENDPATH += $$PWD

HEADERS += $$top_srcdir/docroot/include/*.htm

SOURCES_HTM_STAFF += $$PWD/*.htm
htm_staff.name = htm
htm_staff.input = SOURCES_HTM_STAFF
htm_staff.dependency_type = TYPE_C
htm_staff.variable_out = JUNK
htm_staff.output = $$shadowed($$PWD)/${QMAKE_FILE_IN_BASE}.html
htm_staff.CONFIG = no_link target_predeps
htm_staff.commands = cpp  -E -x c -P ${QMAKE_FILE_NAME} > ${QMAKE_FILE_OUT}
QMAKE_EXTRA_COMPILERS += htm_staff

结果是一个类似于 c 的预处理环境 html 源文件包含 #includes "header.htm"

问题:

  • cpp 将忽略可能包含应该显示的数据的 C 注释。 -C 标志修复了这个问题,但 cpp 然后在 gpl 通知上拍打我不确定如何抑制的文件?
  • 未终止的字符常量,如 ' 或 " 将引发严重错误,例如,如果源文档包含单词 Don't