我正在关注GNU Makefile treating each recipe line as sub-shell command without continuation character
中的解决方案target_compile: PROJECT_SIM_OPTS += -LDFLAGS -L${CURRENT_DIR},-lm -load
target_compile: copy_shared_object actual_compile_with_sim_opts
@echo PROJECT_SIM_OPTS=${PROJECT_SIM_OPTS} ...
当我创建Makefile时,我能够看到第二个target_compile
触发,但不是第一个target_compile
除了变量之外没有依赖关系和配方。我尝试在行override
之前添加PROJECT_SIM_OPTS
,在行尾添加;
,但仍无效。
没有报告错误消息,这使得检测更加困难。简而言之,我必须将这段代码嵌入到另一个Makefile中,如果第一个目标可行,我将看到一个用-LDFLAGS -L${CURRENT_DIR},-lm -load
生成的文件。由于生成此文件时没有这些标志,我有信心说第一个目标没有触发。
两个target_compile如何协同工作?
答案 0 :(得分:1)
原来是一个订购问题。在我的情况下
target_compile: copy_shared_object actual_compile_with_sim_opts
@echo PROJECT_SIM_OPTS=${PROJECT_SIM_OPTS} ...
actual_compile_with_sim_opts
在copy_shared_object
一旦我把这样的依赖,
actual_compile_with_sim_opts: copy_shared_object
我能够让两个目标都使用正确的标志
感谢@Beta的所有帮助。