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来寻找pwd所有人都project.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,您可以使其独立于操作系统细节,例如,这将适用于任何操作系统。

请注意,您会在项目的特定目录树上创建依赖项,但这就​​是 MATLAB 的方式。

于 2013-07-16T05:48:44.120 回答