Я пишу приложение на С++, которое опирается на различные ресурсы в моем проекте. Прямо сейчас у меня есть относительный путь от созданного исполняемого файла к каждому ресурсу, жестко закодированному в моих источниках, и это позволяет моей программе открывать файлы и читать данные в каждом ресурсе. Это работает нормально, но для этого требуется, чтобы я запускал исполняемый файл из определенного пути относительно ресурсов. Поэтому, если я пытаюсь запустить свой исполняемый файл из другого места, он не может открыть файлы и не может продолжить.
Есть ли переносимый способ включения CMake моих ресурсов в исполняемые файлы (или библиотеки), чтобы я мог просто получить к ним доступ в памяти во время выполнения, вместо того, чтобы открывать файлы, чьи пути хрупки? Я нашел вопрос , и похоже, что вложение ресурсов может быть сделано достаточно хорошо с помощью магии ld
. Поэтому мой вопрос заключается в том, как мне это сделать с помощью переносного кросс-платформенного метода с использованием CMake? Мне действительно нужно, чтобы мое приложение запускалось как на x86, так и на ARM. Я в порядке с поддержкой только Linux (Embedded), но бонусных очков, если кто-нибудь может предложить, как это сделать для Windows (Embedded).
EDIT: Я забыл упомянуть о желаемом свойстве решения. Я хотел бы иметь возможность использовать CMake для кросс-компиляции приложения, когда я создаю ARM, вместо того, чтобы компилировать его изначально на мою цель ARM.