扩展名为.OBJ的CMake和文本文件

时间:2018-10-29 22:41:18

标签: cmake

我有一个Mac OS CMake项目,我正在尝试将Wavefront文本.obj文件捆绑到应用程序的资源中(https://en.wikipedia.org/wiki/Wavefront_.obj_file):内容无关紧要,但恰恰是该标准扩展名格式为.obj。

现在,如果我将文件命名为something.obj_,则可使一切正常运行,因此这不是“ mac问题”。但我想保留原始扩展名.obj。 我想要实现的是我的目标可执行文件也依赖于.obj资源文件,因为对资源的更改应重新创建具有新文件的捆绑软件。 我的问题是,对名为.obj的文件的任何依赖关系都会将其解释为代码对象,而链接程序只会发出错误:

ld:警告:忽略文件../../assets/file.obj,文件是为不支持的文件格式构建的(0x23 0x20 0x42 0x6C 0x65 0x6E 0x64 0x65 0x72 0x20 0x76 0x32 0x2E 0x37 0x39 0x20)链接的架构(x86_64):../../ assets / file.obj

从我的观察中,可以正确复制同一目录中具有“未知”扩展名(例如.mtl)的任何其他文件,但是该.obj文件必须是某些触发与链接器关联的规则的文件。

如果名为.obj,.cpp或.o,如何使cmake单独将其作为“要复制的文本文件”进行简单处理?

1 个答案:

答案 0 :(得分:0)

我想我找到了解决自己问题的方法:

public class DetectionBox
{
    public string name { get; set; }
    public List<double> bbox { get; set; }
    public int id { get; set; }
}

public class Content
{
    public int detections { get; set; }
    public List<DetectionBox> detection_boxes { get; set; }
    public string timestamp { get; set; }
    public string person_id { get; set; }
    public string features { get; set; }
}

public class Data
{
    public Content content { get; set; }
    public string name { get; set; }
    public string address { get; set; }
    public int age { get; set; }
}


Data data = JsonConvert.DeserializeObject<Data>(json);

这将毫无问题地通过链接器传递ASSET_FILES