How to manage relative addpath uses in subfunctions, when using SVN for example ?

조회 수: 62 (최근 30일)
Marc Crapeau
Marc Crapeau 2011년 4월 4일
댓글: qaqcvc 2019년 7월 17일
Hello,
I'm currently creating a series of matlab m-files which are monitored by SVN. The m-files are located in different sub-directories. Some of them are sub-functions and are called by a lot of different m-files. This sub-functions need some other sub-(sub-)functions and would need a use of addpath to reach them. But due to the fact that other people will retrieve my m-files in their home space, I cannot use absolute paths... And the use of relative paths with addpath for sub-functions is not possible because addpath works inside the working path, not from the place where the m-file which call it is located.
I know that SVN is used for matlab code, so I would like to know how these links are managed without using this kind of code at the begining of each function:
mfile_callers=dbstack;
if length(mfile_callers)==1
addpath('MyRelativeDir');
else
local_path=fileparts(which(mfile_callers(end-1).name));
addpath(fullfile(local_path,'MyRelativeDir'));
end

답변 (3개)

Marc Crapeau
Marc Crapeau 2011년 4월 5일
After hours of search, I have finally decided to replace my classic addpath blocks by new ones in ALL my functions, replacing for example:
addpath('../common_files');
addpath('../Readers');
by
mfilepath=fileparts(which(mfilename));
addpath(fullfile(mfilepath,'../common_files'));
addpath(fullfile(mfilepath,'../Readers'));
Not really beautiful..

Ayman Mukhaimar
Ayman Mukhaimar 2019년 4월 9일
편집: Ayman Mukhaimar 2019년 4월 9일
use one dot instead of two
addpath('./common_files');
addpath('./Readers');

Oytun Peksel
Oytun Peksel 2018년 10월 2일
addpath(fullfile(pwd,'..\common_files'))

카테고리

Help CenterFile Exchange에서 Search Path에 대해 자세히 알아보기

제품

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by