🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

2 total messages Started by Szyk Cech Sun, 14 Apr 2019 12:29
Rozwój złożonych aplikacji/systemów w C/C++ w Linux-ie
#309848
Author: Szyk Cech
Date: Sun, 14 Apr 2019 12:29
75 lines
4689 bytes
Witam
Rozwijam własne projekty pisane w C++ z Qt. Te projekty robią się coraz 
bardziej złożone - już nie jest to jeden exe ale również inne biblioteki 
publikowane na Lgpl do tego moje własne biblioteki (w tym pluginy).

[MOJE PODEJŚCIE]
Ja te projekty do tej pory rozwijam w ten sposób, że mam katalog ze 
źródłami. W nim podkatalogi z aplikacjami (exe) oraz podkatalog Libs z 
moimi bibliotekami i z pod katalogiem 3rdparty w którym trzymam 
biblioteki zewnętrzne (na Lgpl).
Hierarchia przykładowego projektu Textprofan2 wygląda tak:
├── Src
│   ├── Libs
│   │   ├── 3rdparty
│   │   │   ├── Hunspell
│   │   │   ├── KSyntaxHighlighter
│   │   │   │   ├── extra-cmake-modules
│   │   │   │   └── syntax-highlighting
│   │   │   └── qtcsv-1.5
│   │   ├── Common
│   │   ├── Editor
│   │   ├── Message
│   │   └── TextToSpeechConfig
│   └── Textprofan
│       ├── ColorSchemes
│       ├── Csv
│       ├── Images
│       ├── Src
│       │   ├── Models
│       │   ├── Widgets
│       │   └── Windows
│       ├── Translations
│       └── Txt

W plikach projektów qmake i cmake mam dodane wpisy gwarantujące 
umieszczanie plików wynikowych w katalogu Texprofan2-work (exe lądują w 
tym podkatalogu, natomiast biblioteki w podkatalogu Libs).
Wtedy uruchamiam te projekty w środowisku z odpowiednią wartością 
zmiennej LD_LIBRARY_PATH.
Do uruchamiania programu bez środowiska stosuję skrypt który ustawia 
LD_LIBRARY_PATH.
I to działa. Jednak pojawiły się problemy.

[PROBLEMY Z MOIM PODEJŚCIEM]
Problem się pojawia wtedy gdy chcę robić paczki (snap, flatpack czy 
appimage - tak by nie ograniczać się do pojedynczych distro, których 
nowe wersje wychodzą co chwilę - co potencjalnie rodzi nowe problemy).
Problem pojawia się wtedy, gdy ja w moich skryptach budowania mam podane 
katalogi docelowe - co jest nie dopuszczalne dla systemów budowania. Dla 
nich dopuszczalne i nawet oczekiwane są katalogi instalacyjne (np 
/usr/bin czy /usr/local/bin czy /opt/bin/ - nigdy nie wiem gdzie te moje 
programy powinny lądować w przypadku budowania paczek ani w przypadku 
instalacji bez paczek).

[ALTERNATYWNE PODEJŚCIE 1]
Można by po każdej zmianie w programie budować paczkę i instalować 
program od nowa (z zachowaniem ustawień). Tak wyglądała moja praca gdy 
programowałem aplikacje na Android-a (zawsze trzeba było budować do 
początku całą paczkę apk). Trwa to wieki całe - więc chyba nie tędy droga...

[ALTERNATYWNE PODEJŚCIE 2]
Można by budować program i go instalować do systemu nadpisując pliki 
zainstalowane wcześniej. Jednak to nie jest możliwe w przypadku 
wspomnianych paczek gdyż one uruchamiają programy w piaskownicy.

Stąd moje pytanie końcowe:
Jak są rozwijane złożone projekty takie jak np. Kde, Libre Office czy 
Firefox? W sensie tego jak budują i uruchamiają te swoje programy. Czy 
mają wierną kopię środowiska uruchomieniowego i tam kopiują te pliki i 
je uruchamiają? Czy może nadpisują zainstalowane programy w systemie? 
Czy może za każdym razem budują całe pakiety i instalują je normalnie - 
tylko jak wtedy uruchamiać debuger czy profiler?!?

z góry dzięki i pozdro
Szyk Cech
Re: Rozwój złożonych aplikacji/systemów w C/C++ w Linux-ie
#309849
Author: Szyk Cech
Date: Sun, 14 Apr 2019 14:18
11 lines
1618 bytes
W dniu 14.04.2019 o 14:29, Szyk Cech pisze:
> Problem pojawia się wtedy, gdy ja w moich skryptach budowania mam podane 
> katalogi docelowe - co jest nie dopuszczalne dla systemów budowania

PACZEK (zapomniałem dodać tego słówka)

> . Dla 
> nich dopuszczalne i nawet oczekiwane są katalogi instalacyjne (np 
> /usr/bin czy /usr/local/bin czy /opt/bin/ - nigdy nie wiem gdzie te moje 
> programy powinny lądować w przypadku budowania paczek ani w przypadku 
> instalacji bez paczek).
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads