У меня есть команда в моем make-файле, которая использует Qt resource compiler.
Эта утилита создает статический массив для каждого файла изображения, переданного ему.
К сожалению, rcc.exe
не является детерминированным: порядок этих массивов внутри сгенерированного файла .cpp
отличается для каждого вызова.
qt rcc (resource compiler) не является детерминированным - как сделать его детерминированным
Я побежал его три раза:
>C:\rcc.exe -name lookupmodels lookupmodels.qrc -o .qrc/qrc_lookupmodels-1.cpp
>C:\rcc.exe -name lookupmodels lookupmodels.qrc -o .qrc/qrc_lookupmodels-2.cpp
>C:\rcc.exe -name lookupmodels lookupmodels.qrc -o .qrc/qrc_lookupmodels-3.cpp
Файл .qrc
является:
<RCC>
<qresource prefix="/">
<file>datapool_pdal1.csv</file>
<file>events_Ic.csv</file>
<file>events_Evt.csv</file>
<file>events_Other.csv</file>
<file>key_events.csv</file>
<file>loglevel_DPvalues.csv</file>
<file>loglevel_Evtvalues.csv</file>
<file>log_freqDP.csv</file>
</qresource>
</RCC>
Being массивы static const unsigned char
, что .cpp
файлы огромны, так что я не буду показывать их здесь, но Основная проблема заключается в том, что порядок этих массивов, представляющих изображения, изменяется от одного вызова к другому.
ВЫПУСКА
Для сравнения строить строить - особенно, так как я переключение строить системы - мне нужно, чтобы иметь возможность сравнить артефакты.
Я бы хотел, чтобы они не менялись, поэтому я могу сравнивать вывод артефакта из сборки для сборки, чтобы увидеть, что-то изменилось или нет.
Это ТОЛЬКО объектный файл, который дает мне эту проблему.
Очевидно, что тогда вы не должны полагаться на порядок ресурсов. К ресурсам обращаются имена/пути (как определено в .qrc), а не их порядок в файлах .cpp. –
@ VioletGiraffe порядок массивов ресурсов влияет на файл объекта, который влияет на мой окончательный исполняемый файл. Как еще я должен сравнивать исполняемые файлы между сборками? – Adrian
Я вижу, я пропустил последний бит вопроса. Но вы не можете реально ожидать, что ваши двоичные файлы будут соответствовать бит-биту в любом случае. По крайней мере, мои никогда не делают, у них есть такие вещи, как случайные идентификаторы и дата/время. –