我有一些CmakeLists.txt
个文件,我想在已知的include之后插入另一个include。所以,这就是我所拥有的:
include_directories(src include)
而且,这就是我想要的结果
include_directories(src include)
include_directories("${CMAKE_INSTALL_PREFIX}/include")
有关最佳方法的任何想法吗?我假设sed
最有意义,但我愿意接受替代方案。
[edit]找到duplicate question。
答案 0 :(得分:1)
您可以将这个简单的sed命令与内联编辑一起使用:
sed -i.bak '/include_directories(src include)/a\
include_directories("${CMAKE_INSTALL_PREFIX}/include")
' CmakeLists.txt
a
命令,在搜索到的字符串后附加一个新字符串。-i.bak
用于倾斜编辑输入文件。答案 1 :(得分:0)
如果您对重复问题的答案不满意,可以试试这个:
sed '/include_directories(src include)/s/$/\
include_directories(\"${CMAKE_INSTALL_PREFIX}\/include\")/' filename
这可能或不起作用,具体取决于您的shell。如果没有,那么教训就是首先尝试简单的事情,然后再建立起来。
答案 2 :(得分:0)
sed是一个很好的工具,可以在单行上进行简单的替换,但对于其他任何你最好使用awk:
awk '{print} /include_directories\(src include\)/{print "include_directories(\"${CMAKE_INSTALL_PREFIX}/include\")"}' file
答案 3 :(得分:0)
另一个awk
变体:
awk '/include_directories\(src include\)/{$0=$0 "\ninclude_directories(\"${CMAKE_INSTALL_PREFIX}/include\")"}8' file
如果找到模式,请在当前行中添加一个新行,然后全部打印。