Используйте этот код css
.button {
position: relative;
display: block;
width: 120px;
height: 50px;
background: blue;
padding-right: 40px;
overflow: hidden;
color:#fff;
padding-left:30px;
line-height:22px;
}
.button:after{
position: absolute;
bottom: 0;
height: 50px;
width: 30px;
right: -14px;
background: red;
content: "";
z-index: 1000;
transform: skew(-30deg);
}
В общем, использование циклов с make не очень "приукрашивает". Makefile - это целый язык, основанный на итерации и рекурсии, поэтому попытка сделать «дополнительную» итерацию внутри рецепта часто избыточна.
Если вам нужно что-то перебрать, большинство , особенно , когда это что-то - файлы, вы должны попытаться работать с make, используя преимущества его целевой / обязательной организации. Выше приведен алгоритм:
$(foreach <file with "test-" prefix> run:
main.o <test-name> <out-name>
diff -q <correct-name> <out-name>
, который идеально подходит для поведения по умолчанию. Чтобы перевести это в make-файл, вы пишете правило, которое вызывает одну итерацию цикла, а затем используете предварительные условия для его запуска для нужных вам файлов. Примерно так:
TEST_INPUTS := $(wildcard test-*.txt)
.PHONY: autotest $(TEST_INPUTS)
autotest: $(TEST_INPUTS)
$(TEST_INPUTS): test-%.txt: program
[111]lt; $@ test-out.txt
diff -q test-out.txt out-$*.txt
Мало того, что это гораздо более похоже на дизайн, но у него есть и другие преимущества: например, вы можете запустить make test-provided.txt
, и он будет запускать только этот один тест вместо всех тестов.
Вы должны использовать статических шаблонных правил здесь не нормальные шаблонные правила, потому что .PHONY
цели не могут работать с шаблонными правилами.