proj
我的项目具有带有子目录的顶级目录runtime
和test
. 基本上,test
取决于runtime
,但它有点复杂。
预期的行为:如果你修改了一个文件runtime
,然后make runtime
,然后make test
,这应该重建test
。
实际行为:对于test
,你会得到“make:Nothing to be done for `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 中,有一条目标规则compiler_runtime_make_all
似乎对应于QMAKE_EXTRA_COMPILERS
. 由这个规则构建的文件(foo.bc 和 bar.bc)在OBJECTS
列表中,所以当你制作这个 Makefile 时它们会被构建。
在test
的 Makefile 中,还有一个 target 的规则compiler_runtime_make_all
,但它没有配方,也没有在任何地方引用。
那么我怎么知道test
它应该取决于QMAKE_EXTRA_COMPILERS
for runtime
?