【问题标题】:Using Relative Paths with Matlab Coder在 Matlab Coder 中使用相对路径
【发布时间】:2019-10-20 20:37:26
【问题描述】:

我正在尝试为 Matlab 函数生成 C 代码。它使用猫鼬网络服务器进行通信。如果我将.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 本机文件位置的正确方法是什么?

【问题讨论】:

    标签: matlab matlab-coder


    【解决方案1】:

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

    addpath('the_relative_path_to_native')

    甚至更好:

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

    发出此命令后,Matlab 在此文件夹中搜索 .m 函数以及包含的 C 文件。如前所述,这应该可以解决您的问题。

    但是稍后,如果你想编译生成的代码,包含的文件夹不会被复制/合并/包含在Matlab创建的codegen目录中,所以你应该以不同的方式处理,例如包含在您自定义的makefile os 目录中添加一条命令,将所需文件复制到便于编译的文件夹中。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-09
        • 2014-02-20
        • 1970-01-01
        • 2017-11-30
        • 1970-01-01
        • 1970-01-01
        • 2023-04-01
        • 1970-01-01
        相关资源
        最近更新 更多