2015-03-19 64 views
1

我有qmake項目與生成文檔的目標。遠在純慶典QMAKE的我會寫這樣的:qmake語法和從sed重定向標準輸出到其他sed

PWDMOD=$(echo $PWD | sed -e 's/\//\\\//g') ; 
sed -i 's/INPUT = /INPUT = $PWDMOD\/src\/fileset/g' $PWD/Doxyfile 

是的,我需要同時make doc執行修正到的Doxyfile輸入變量。但在我的情況 - 在qmake環境中,我寫了這樣的:

doc.commands = \ 
(PWDMOD=$(echo $$PWD | sed -e 's/\//\\\//g') ; \ 
sed -i 's/INPUT = /INPUT = $$PWDMOD\/src\/fileset/g' $$PWD/Doxyfile ; \ 
... 

和qmake分析器發給我關於第一行的錯誤消息。像「使用圓括號不正確的方式,像這樣$(...)」。

那麼我該如何寫這樣的qmake代碼?或者我如何將stdout從第一個sed命令重定向到第二個以避免這種情況?謝謝。

+0

不熟悉qmake,但一般會期望雙美元符號是必要的。但整個問題都是過度工程化的;只需在'sed'中使用不同的分隔符。就像'doc.commands = sed -i's%INPUT =%INPUT = $$ PWD/src/fileset /%g「$$ PWD/Doxyfile' – tripleee 2015-03-19 09:05:38

+0

非常感謝您的提示@tripleee關於」%「。它使qmake代碼看起來很清楚。 – drewpts 2015-03-19 12:53:37

回答

0

qmake中有一個不錯的~=函數,它將爲您節省一個額外的電話給sed

PWDMOD = $$PWD 
PWDMOD ~= s,/,\\/,g 
doc.commands = sed -i \'s/INPUT = /INPUT = $$PWDMOD\\/src\\/fileset/g\' $$PWD/Doxyfile 
+0

謝謝@svlasov,我會記住〜=操作符。但在這種情況下使用運算符與sed的正則表達式似乎太複雜了。 – drewpts 2015-03-19 13:01:29