通过Matlab编码器使用相对路径

时间:2019-10-20 20:37:26

标签: matlab matlab-coder

我正在尝试为Matlab函数生成C代码。它使用猫鼬Web服务器进行通信。如果将.h/.c文件与.m文件放在同一文件夹中,则可以使用以下命令编译所有文件:

coder.cinclude('mongoose.h');
coder.updateBuildInfo('addSourceFiles','mongoose.c');
coder.cinclude('rest.h');
coder.updateBuildInfo('addSourceFiles','rest.c');

我想将我的.c文件和.m文件分开,因此将C文件移到名为native/的文件夹中会导致编译按预期失败。因此,我告诉Matlab使用以下方法在哪里找到它们:

customDir = '/full/path/to/native';
coder.updateBuildInfo('addIncludePaths', customDir);
coder.updateBuildInfo('addSourcePaths', customDir);

哪个工作。但是,它仅适用于绝对路径,而不适用于相对路径。这是一个问题,因为此项目的每个贡献者都将源文件夹保存在不同的位置。使用Matlab工作目录的相对路径告诉Matlab本机文件位置的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

如果您只想生成C代码(而不是编译),我建议将这些文件的相对位置添加到Matlab路径中。您可以执行以下操作:

addpath('the_relative_path_to_native')

甚至更好:

addpath(fullfile(cd(), 'the_relative_path_to_native'))

发出此命令后,Matlab在此文件夹中搜索.m函数以及随附的C文件。这样应该可以解决您描述的问题。

但是,如果您以后要编译生成的代码,则包含的文件夹将不会被复制/合并/包含在Matlab创建的codegen目录中,因此您应该以其他方式进行处理,例如包括自定义makefile中的目录,并添加命令将所需文件复制到便于编译的文件夹中。

答案 1 :(得分:0)

您还可以使用$(START_DIR) marcro,它为您提供了项目工作文件夹的路径。

然后只需指定源文件相对于此路径的位置即可