CMake: Как добавить 3D-модели .obj в проект CW Visual Studio UWP - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь добавить 3d-модель к ресурсам Appx в сборке cmake.У меня он успешно работает с большинством форматов, но файлы, оканчивающиеся на .obj, обрабатываются как скомпилированные объектные файлы.

Генератор cmake Visual Studio, кажется, всегда обрабатывает любой файл с расширением .obj как объектный файл идобавляет его в vcxproj с тегом.

Есть ли способ изменить внутренний тип файла, который использует cmake?Могу ли я указать, что этот файл НЕ является «EXTERNAL_OBJECT»?

Установка VS_DEPLOYMENT_CONTENT на 1 не помогает.Добавление его в свойство RESOURCES не помогает.

Похоже, что это может быть проблемой в самом исходном коде cmake, где он проверяет, является ли тип файла EXTERNAL_OBJECT, прежде чем проверять любые другие флаги или типы, и яне могу понять, как сбросить этот тип.

1 Ответ

0 голосов
/ 22 января 2019

В соответствии с этой проблемой в репозитории cmake gitlab https://gitlab.kitware.com/cmake/cmake/issues/18820, существует решение для хакерских исправлений, но пока нет "правильных" исправлений.

Брэд Кинг:

В качестве очень хакерского, не очень перспективного обходного пути, использующего текущие детали реализации, попробуйте:

get_property (loc. SOURCE myfile.obj РАСПОЛОЖЕНИЕ НЕДВИЖИМОСТИ)

set_property (SOURCE myfile.obj ИМУЩЕСТВО EXTERNAL_OBJECT 0)

Первая строка заставляет этот код и, следовательно, этот код , чтобы запустить CMake, чтобы инициализировать свойство EXTERNAL_OBJECT раньше, чем обычно. Как только это будет сделано, мы можем установить свойство обратно в 0.

Возможное исправление - научить последний код (в CheckExtension) не устанавливать свойство EXTERNAL_OBJECT, если оно уже установлено. Мы не можем изменить поведение по умолчанию при обработке файлов .obj как объектов для связи, но мы можем, по крайней мере, заставить явную настройку свойств работать без вышеуказанного взлома.

Я подтвердил, что это работает для файлов .obj в нашем решении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...