Я столкнулся с похожей проблемой при настройке LibAV
./configure --target-os=mingw32 --arch=x86 --enable-shared --enable-static \
--enable-dxva2 --disable-encoders --enable-hwaccel=dxva2 --extra-cflags=-O3 \
--enable-pthreads
hw -ускоритель dxva2 был отключен, так как dxva2api.h отсутствовал.
Я предлагаю указать, где находится dxva2api.h, и добавить его местоположение в $path или скопировать в соответствующий каталог.
Здесь уже есть отличные sed
решения, но лично я бы предпочел awk
для этого:
awk \
-v if='#if defined(NV_C2C_UPPER_PD)' \
-v endif='#endif' \
'
/payload/{
line=$0
gsub("payload","upper_payload",$0);
printf "%s\n%s\n%s\n%s\n",$line,if,$0,endif
next
}
1' file
Один из способов использования только конструкций POSIXly:
sed -e 'p
/payload/!d
s//upper_&/
i\
#if defined(NV_C2C_UPPER_PD)
a\
#endif
' file
Если вам не нужны экранированные символы новой строки, вы можете сделать следующее, оставаясь при этом POSIX-совместимый:
sed -e 'p
/payload/!d
s//upper_&/
H;s/.*//;x;G
s/^/#if defined(NV_C2C_UPPER_PD)/
s/$/#endif/
' file