【问题标题】:CMake: How to add a .obj 3d models to C++ Visual Studio UWP projectCMake:如何将 .obj 3d 模型添加到 C++ Visual Studio UWP 项目
【发布时间】:2019-02-17 11:46:51
【问题描述】:

我正在尝试在 cmake 构建中将 3d 模型添加到 Appx 的资源中。我已经成功地处理了大多数格式,但以 .obj 结尾的文件被视为已编译的目标文件。

cmake Visual Studio 生成器似乎总是将任何扩展名为 .obj 的文件视为目标文件,并将其添加到带有标签的 vcxproj 中。

有没有办法改变 cmake 正在使用的文件的内部类型?我可以指定这个文件不是“EXTERNAL_OBJECT”吗?

将 VS_DEPLOYMENT_CONTENT 设置为 1 没有帮助。 将其添加到 RESOURCES 属性没有帮助。

看起来这可能是 cmake 源代码本身的问题,它在检查任何其他标志或类型之前检查文件类型是否为 EXTERNAL_OBJECT,我不知道如何取消设置该类型。

【问题讨论】:

    标签: c++ visual-studio cmake uwp


    【解决方案1】:

    根据 cmake gitlab repo https://gitlab.kitware.com/cmake/cmake/issues/18820 上的这个问题,有一个 hacky 修复解决方案,但还没有“正确”修复。

    布拉德·金:

    作为一种滥用当前实现细节的非常老套的、不是面向未来的解决方法,请尝试:

    get_property(loc SOURCE myfile.obj 属性位置)

    set_property(SOURCE myfile.obj PROPERTY EXTERNAL_OBJECT 0)

    第一行强制 this codethis code 运行,导致 CMake 比正常情况更早地初始化 EXTERNAL_OBJECT 属性。完成后,我们可以将属性设置回 0。

    一个可能的解决方法是教导后面的代码(在 CheckExtension 中)不要设置 EXTERNAL_OBJECT 属性(如果已设置)。我们无法更改将 .obj 文件视为要链接的对象的默认行为,但我们至少可以在没有上述技巧的情况下进行显式属性设置。

    我已确认这适用于我们解决方案中的 .obj 文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-11
      • 1970-01-01
      • 2017-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-27
      • 2021-09-05
      相关资源
      最近更新 更多