Я развернул свою собственную систему для проекта веб-сервера C ++, который в основном взял несколько файлов (HTML, CSS, JS, PNG и т. Д.) И создал заголовки C ++, содержащие данные, закодированные как static const char*
. Затем я #include
те заголовки, где мне нужен доступ к данным. Приложение, которое кодирует файлы ресурсов, выполняется как предварительный этап сборки. Само приложение кодирования использовало boost::filesystem
для создания заголовков ресурсов, поэтому работает в Windows / * nix.
Типичный файл ресурсов может выглядеть так:
namespace resource
{
// Generated from mainPage.htm
static const char* mainPage_[] =
{
"<html>...</html>"
};
}
Для двоичного содержимого я кодирую, используя обозначение \x
. Я также проверяю, чтобы данные были перенесены в строку, чтобы их можно было прочитать в редакторе.
У меня действительно были некоторые проблемы - компилятор MS не позволяет static const char*
быть больше, чем 64Kb, который был PITA. К счастью, единственными файлами, которые были больше этого размера, были файлы JavaScript, которые я мог легко разделить на более мелкие фрагменты - хотя большие изображения были бы проблемой.