repo - jak poradzić sobie z dużą zewnętrzną zależnością

0

Mam program napisany w C# który następnie korzysta z innego programu napisanego w C++

np. Ja generuje obrazek z poziomu C#, a później wywołuje program C++owy program_cpp.exe obrazek.jpg aby zrobił coś z tym obrazkiem (np. przyjmijmy że to ffmpeg)

Zastanawiam się jak powinienem to zrobić, aby gdy ktoś sklonuje sobie moje repo nie musiał nic robić aby móc wykonać cały proces (użyć obu programów)

Nad czym się zastanawiałem:

  • Skompilować pod wszystkie platformy i wrzucić binarki do repo, ale problem jest taki, że te pliki wynikowe są ogromne i np. repo zamiast mieć 2MB, to miałoby z 1GB.

  • Osobne repo w którym byłyby all binarki i ludzie by sobie dociągali co potrzebują - instrukcja Install for Windows/Mac/Linux..., ale to takie trochę mierne.

  • To co poprzednie, ale mój programik sam sobie pobiera to co trzeba, ale to też chyba trochę mierne i nie budzi zaufania

  • A może jako że mam kod programu C++, to mógłbym to jakoś wykorzystać? P/Invoke / DllImport?

  • Jakieś kwestie związane z static/dynamic linking?

  • Niech sobie również skompilują C++ - odpada, nie dość że trzeba doinstalować milion rzeczy, to czas kompilacji kosmiczny.

Nie jestem pewien jak to robią projekty typu Zig korzystając z llvma

2

W normalnym życiu albo kompiluje się program ze źródeł (rzadsze) albo ściąga się binarki (częstsze). Ja bym zrobił osobne repo, ale w repo z kodem dał instrukcję jak to skompilować samodzielnie

0

@KamilAdam

Nie ma opcji tego kompilować, serio, zbyt duży narzut.

To jest ogromna kobyła która się kompiluje pół h, gdzie C#owy program kilka sekund.

3

Wedlug mnie gotowe paczki powinienes umieszczac w kategorii "Releases" w Githubie, Gitlabie... I tam powinienes umiescic exec, tar.gz, zip czy cokolwiek innego + krotka instrukcje jak Twoj program uruchomic....

A jesli chcesz aby ktos pracowal nad Twoim programem, to od tego sa Development Instructrions + roznego rodzaju skrypty i instrukcje do nich...

Na windowsa piszesz skrypt powershell, na linuxa piszesz bash, shell, zsh, czy cokolwiek innego :)

4

Możesz spróbować skonteneryzować ten program w C++ i robić: docker run -v volume_inside:path_outside kontener program.exe obrazek.jpg. Możesz wrzucić ten obraz na hub.docker.com i osoba, która będzie odpalać Twój kod w C# będzie teraz miała zależność na dockera, ale już nie będzie musiała kompilować kodu w C++.

1

git lfs ?

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