4

次のディレクトリ構造があります。

├── root            
│   ├── DATA                
│   │   ├── GLOBAL          
│   ├── project1            
│   │   ├── branches
│   │   │   └── dev
│   │   │       └── project.m       
│   │   └── trunk       
│   │       └── project.m

両方の project.m ファイルからパスに DATA/GLOBAL を追加するにはどうすればよいでしょうか?

基本的に、私はgenpath部分的なパスを機能させることを目指しています。exist('DATA/GLOBAL')7 (ディレクトリが見つかった) をgenpath('DATA/GLOBAL')返しますが、'' (パスが生成されていません) を返します。

4

1 に答える 1

1

を使用して、すべてに共通regexする部分を探すことは、かなり堅牢な方法です。pwdproject.m

P = regexp(pwd, ['^.*root' filesep], 'match');

if isempty(P)
    error('project:globaldir_missing',...
        'Could not find global data directory.');
end

newPath = [P{1} 'DATA' filesep 'GLOBAL'];
if ~exist(newPath , 'dir')
    error('project:pathing_error',...
        'Global data directory does not seem to exist.');
end

genpath(newPath);

を使用filesepすることで、OS の仕様に依存しなくなります。たとえば、これはどの OS でも動作します。

プロジェクトの特定のディレクトリ ツリーに依存関係を作成することに注意してください。ただし、これは MATLAB の方法です。

于 2013-07-16T05:48:44.120 に答える