2016-05-29 5 views
0

linkのように、#includeの単純な置換のためにcプリプロセッサを使用しています。以下は、第一に、私は$ {} QMAKE_FILE_NAMEとしてループに使用しています私のpreprocessor.priから抜粋Qt Creator qmakeはHTMLプリプロセッサを組み込みます

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) 

は常に空白になっていますか? $ {QMAKE_FILE_BASE}を使用できないため、プリプロセッサの出力を$$ shadowed($$ PWD)/にする方法がわかりません。

第2に、コメントや特殊文字の扱いがHTML(特にホームレスの "や"また、コメントを無視すると、出力HTMLへの長いGNUコメントの接頭辞)には理想的ではありません私はIDE内ですべての私のデバッグを維持したいのQt Creatorをとうまく統合。

(ボーナスポイントは、HTML/CSS/JS縮小をし、または検証場合)

答えて

0

をしようと誰のための一般的なプリ・プロセッサsource.htmを含む各フォルダにcustom-compiler.pri(以下の例)を置くと、すべてのビルド階層が維持されるようにするのが最も簡単です。NB *カスタムCの名前とソースompilerは一意でなければなりません!

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 

の#includeを含む前処理htmlソースファイルのための環境のような結果AC "header.htm"

問題:

  • CPPが表示されるべきデータが含まれる可能性がありますCのコメントを無視します。 -Cフラグはこれを修正しますが、cppはgplの通知を受けて、どのように抑止するのかが分かりません。
  • 'or'のような終了しない文字定数は重大なエラーを投げます。たとえば、ソース文書に「Do not」という単語が含まれている場合
関連する問題