MATLAB Answers

3

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

Asked by Marc Crapeau on 4 Apr 2011
Latest activity Commented on by qaqcvc
on 17 Jul 2019
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

  0 Comments

Sign in to comment.

3 Answers

Marc Crapeau 님의 답변 5 Apr 2011

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..

  0 Comments

Sign in to comment.


Answer by Ayman Mukhaimar on 9 Apr 2019
Edited by Ayman Mukhaimar on 9 Apr 2019

use one dot instead of two
addpath('./common_files');
addpath('./Readers');

  1 Comment

Sign in to comment.


Oytun Peksel 님의 답변 2 Oct 2018

addpath(fullfile(pwd,'..\common_files'))

  0 Comments

Sign in to comment.