2016-09-30 5 views
0

私はサブフォルダ内に複数のライブラリを持つC++プロジェクトを作成しています。私が使用しているクラウドIDEでは、クラウドフラッシング機能を使用するには、すべてのファイルが同じフォルダにある必要があります。 私は今2つのスクリプトを持っています。ディレクトリ構造を平坦化するものと、新しいレイアウトと一致するようにインクルードを平坦化するもの。複数のファイルでパスを#includeする方法

find $(_CLOUD_SRC_FOLDER) -type f \(-iname \*.cpp -o -iname \*.hpp \) -maxdepth 3 -exec sed -i.bak 's/\#include "..\/lib\//#include "/g' {}

上記の行だけ#include "../lib/filename.hpp"のために働く:これまでのところ、私は含まれての絶対パスを置き換えるために使用するスクリプトに以下を追加してきた 。これを再フォーマットして#include "any/path/filename.hpp"と一致させ、#include "filename.hpp"と置き換えるにはどうすればよいですか?

答えて

1

これを試してみてください:

find $(_CLOUD_SRC_FOLDER) -type f \(-iname \*.cpp -o -iname \*.h -o -iname \*.hpp \) -maxdepth 3 -exec sed -i.bak 's/\(#include "\)[^"]*\/\([^"]*"\)/\1\2/' {} + 

#include文字列とファイル名は後方参照を使用して、パスと出力からキャプチャされています。

+0

少し編集しましたが、魅力的でした! – Alain1405

関連する問題