私のプロジェクトには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_COMPILERSruntime