私のプロジェクトにはproj
、サブディレクトリruntime
とtest
. 基本的には にtest
依存しますruntime
が、少し複雑です。
予想される動作: でファイルを変更しruntime
、次に make runtime
、次に makeを実行すると、ファイルtest
が再構築されtest
ます。
実際の動作: の場合test
、「make: `first' に対して何もする必要はありません」と表示されます。
以下は、プロジェクト ファイルからの関連する抜粋です。
proj.pro:
test.depends = runtime
ランタイム.pro:
TEMPLATE = lib
CONFIG = no_link target_predeps staticlib
TARGET =
# Avoid building libruntime.a
QMAKE_AR_CMD = @true
QMAKE_RANLIB = @true
include(../proj.pri)
RUNTIME_SOURCES += \
foo.c
bar.c
proj.pri:
CLANG_RUNTIME_FLAGS = -emit-llvm
runtime.input = RUNTIME_SOURCES
runtime.output = lib${QMAKE_FILE_IN_BASE}.bc
runtime.commands = $$CLANG $$CLANG_RUNTIME_FLAGS -c ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT}
QMAKE_EXTRA_COMPILERS += runtime
runtime
の Makefile には、 に対応していると思われる target のルールがありcompiler_runtime_make_all
ますQMAKE_EXTRA_COMPILERS
。このルールでビルドされたファイル (foo.bc と bar.bc) はOBJECTS
リストにあるので、この Makefile を作成するとビルドされます。
test
の Makefile には、 target のルールもありますがcompiler_runtime_make_all
、レシピがなく、どこにも参照されていません。
では、 fortest
に依存する必要があることをどのように伝えるのですか?QMAKE_EXTRA_COMPILERS
runtime