我写了一个简单的test.pc文件,如下所示:
includedir=/usr/include
includearchdir=/usr/include
我想要的只是用 $ {prefix} 替换 / usr ,这样它就会变成如下所示:
includedir=${prefix}/include
includearchdir=${prefix}/include
所以,我编写了一个简单的Makefile来处理test.pc文件,如下所示:
all:
sed -e 's|=/usr|=$\{prefix\}|g' test.pc
当我执行make时,它会处理test.pc,并在 $ {prefix} 中缺少'$'时显示如下答案:
includedir={prefix}/include
includearchdir={prefix}/include
有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
由于您在Makefile中,您需要转义美元符号$
:
sed -e 's|=/usr|=$$\{prefix\}|g'
让make不理解引用,所以你甚至需要在引用的字符串中转义字符。
答案 1 :(得分:0)
我解决了这个问题。事实证明,我需要使用$$$$\{prefix\}
而不是$\{prefix\}
来替换生产Makefile文件中的现有/usr
。我不知道为什么,但它确实有效。所以,我完整添加的修补程序如下所示。谢谢所有帮助过的人,我很感激。
$(STAGING_DIR_HOST)/bin/sed -i 's|prefix=\(.*\)|prefix=$(STAGING_DIR)/usr|g;s|includearchdir=/usr|includearchdir=$$$$\{prefix\}|g' $(1)/usr/lib/pkgconfig/*.pc