我有一个非常简单的makefile如下
FRUIT = apple orange
all : $(FRUIT)
$(FRUIT) :
ifeq ($(@),apple)
@echo "APPLE!"
else
@echo "ORANGE!"
endif
执行时
make all
我看到了
ORANGE!
ORANGE!
我检查了我的标签,我相信我在ifeq上的间距是正确的。我错过了什么?
答案 0 :(得分:1)
首次解析Makefile时会评估ifeq
,而不会在执行单个配方时评估$(@)
。此时,$(FRUIT):
case $@ in apple) echo "APPLE!";; *) echo "ORANGE!";; asac
始终为空字符串。
您可以在配方本身的shell脚本中执行相同的逻辑。
$@
答案 1 :(得分:0)
条件指令在make读取后立即展开,早在执行配方之前。当make解析该行时,else
会扩展为空字符串,因此您总是以条件的FRUIT = apple orange
all: $(FRUIT)
$(FRUIT):
@echo "$@!"
部分结束。
只需使用以下内容:
apple:
@echo "APPLE!"
orange:
@echo "ORANGE!"
如果您需要单独的食谱,请写下
angular.module('app', []).controller('MyController', [
'$scope', '$http',
function($scope, $http) {
$scope.SubmitForm = function() {}
$scope.ClearForm = function() {
$scope.newPlan = {};
$scope.$digest();
}
}
]);
$('#AddLeavePlanWindow').on('hide.bs.modal', function(e) {
angular.element("#AppElement").scope().ClearForm();
});