1

デフォルトのqmakeコンパイラを(SOURCES変数を介して)使用する場合、次のようにプリコンパイル済みヘッダーを使用できます。

CONFIG += precompile_header
PRECOMPILED_HEADER = stable.h
SOURCES = main.c

ただし、カスタム コンパイラを (経由で) 使用したいと思いQMAKE_EXTRA_COMPILERSます。私はこれを試しました:

CONFIG += precompile_header
PRECOMPILED_HEADER = stable.h
MY_SOURCES = main.c

my.input = MY_SOURCES
my.output = ${QMAKE_FILE_IN_BASE}.o
my.commands = clang $$QMAKE_CFLAGS_USE_PRECOMPILE -c ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT}
QMAKE_EXTRA_COMPILERS += my

QMAKE_CFLAGS_USE_PRECOMPILE...そして、プリコンパイル済みヘッダーがビルドされますが、プリコンパイル済みヘッダーへのパスが含まれていないため、カスタム コンパイラが失敗します。( として定義されて-Xclang -include-pch -Xclang ${QMAKE_PCH_OUTPUT}おり、明らか${QMAKE_PCH_OUTPUT}に空です。)

生成されたプリコンパイル済みヘッダーの名前を取得して、カスタム コンパイラにパラメーターとして渡すにはどうすればよいですか?

4

1 に答える 1

2

qmake のソース コードを見るとUnixMakefileGenerator::init()、組み込みの C、CXX、OBJC、および OBJCXX コンパイラでのみ機能するように、プリコンパイル済みヘッダー処理がハードコードされているようです。

QMAKE_PCH_OUTPUT、GCC および Clang スタイルのプリコンパイル済みヘッダーの場合、PRECOMPILED_DIR、 、 / / / 、およびTARGETのいずれかを組み合わせて構築されます。したがって、質問の 2 番目の例では、次のコマンド ラインが機能するはずです。cc++objective-cobjective-c++QMAKE_PCH_OUTPUT_EXT

my.commands = clang -Xclang -include-pch -Xclang $$TARGET/c$$QMAKE_PCH_OUTPUT_EXT -c ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT}
于 2013-01-29T05:41:06.887 に答える