Jak wygenerować plik .h z pliku binarnego?

0

moge prosić o polecenie jakiegoś lepszego dodatku do cmake
potrzebuje wygenerować plik H z pliku binarnego

znalazłem coś takiego https://gist.github.com/sivachandran/3a0de157dccef822a230

Sposób użycia

include(bin2h.cmake)
bin2h(SOURCE_FILE "Logo.png" HEADER_FILE "Logo.h" VARIABLE_NAME "LOGO_PNG")

i potem w c++

#include "Logo.h"
for(int i = 0; i< LOGO_PNG_SIZE ; ++i)
{
  fmt::print("{}",LOGO_PNG[i]);
}

generalnie działa tylko ma parę drobnych wad np. po zmodyfikowaniu pliku musze uruchomic cmake

0

Czekaj czekaj czekaj. Czy Ty chcesz generalnie wygenerować kod źródłowy z obrazka?

2
Czitels napisał(a):

Czekaj czekaj czekaj. Czy Ty chcesz generalnie wygenerować kod źródłowy z obrazka?

Prawie. On chce wygenerować nagłówek, który będzie zawierał definicję tablicy, która będzie przechowywała binarną zawartość tego obrazka. To przynajmniej robi ten referencyjny cmake.

1
Marius.Maximus napisał(a):

parę drobnych wad np. po zmodyfikowaniu pliku musze uruchomic cmake

A co w tym jest nieoczekiwanego ?
Zmodyfikowany .h nie zaskutkuje cudownie

0

Generalnie problem polega na tym, że ta funkcja wykonywana jest w fazie konfiguracji.
Ergo dzieje się tylko raz na utworzenie generatora.

Jest na to brzydki hack. Można uruchomić plik z kodem cmake jako skrypt:

add_custom_command(
   OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/Logo.h"
   COMMAND "${CMAKE_COMMAND}" -DPARAM_NAME=PARAM_VALUE -P bin2h.cmake
   DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/Logo.png"
)

Nie jestem pewien czy zadziała.
Żeby wykrywało zależności "${CMAKE_CURRENT_BINARY_DIR}/Logo.h" musi być dodane to jakiegoś targetu.
Oczywiście trzeba dodać do bin2h.cmake kod który wywoła tę funkcję bin2h z przekazanymi parametrami (za pomocą -D...).

Disclaimer: Nie jestem pewien czy zadziała i nie jest to pełen przykład. Wskazuję tylko potencjalny kierunek rozwiązania.

1 użytkowników online, w tym zalogowanych: 0, gości: 1