Vulkan.hpp компилируется в одной системе, но не в другой - PullRequest
0 голосов
/ 12 октября 2019

У меня есть следующая общая функция:

template <typename U>
auto CastVkArray(std::vector<U> &unique_handles)
{
    std::vector<typename U::element_type> handles;
        for(auto &u_handle : unique_handles) handles.push_back(*u_handle);
    return handles;
}

Проблема в том, что хотя я думал, что поручил premake5 использовать версию в локальном каталоге в моем проекте, она использовала установленную версию системывместо. Несоответствие версии означало, что я использовал старый заголовок vulkan.hpp, а не тот, который мне нужен. Который я временно использую для преобразования уникальных массивов дескрипторов в неуникальные массивы. Этот код прекрасно компилируется на моем рабочем столе (arch linux), однако на моем ноутбуке (ubuntu) я получаю сообщение об ошибке:

error: no type named ‘element_type’ in ‘class vk::UniqueHandle<vk::CommandBuffer>’
     std::vector<typename U::element_type> handles;

Я использую premake 5 для генерации среды сборки, и скрипт не изменилсямежду 2 системами. Я проверил, что все библиотеки, которые я использую, имеют одинаковую версию, в частности, я убедился, что vulkan sdk одинаков между двумя компьютерами.

Я несколько раз удалял и перестраивал свой код, чтобы проверить его на потенциальную возможностьусловия гонки при компиляции (просто чтобы увидеть, изменилось ли что-нибудь), ошибка всегда одна и та же.

Единственное различие, которое я обнаружил, состоит в том, что сообщаемая версия premake в arch - 5.0.0-dev, но включенаUbuntu это 5.0.0-alpha14

Но мне не удалось найти версию dev в официальном репозитории github premake.

...