2013-01-07 6 views
10

Potrzebuję porady w następującej sprawie:SCons lub CUpewnij zamiast qmake

Mam projektu qt, która jest skonfigurowana do pracy z qmake ładnie. Jednak ze względu na rozszerzenia wymagań i przyszłe kierunki projektu muszę zmienić jego system kompilacji, ponieważ aplikacja będzie wymagać pewnych zmian w sposobie jego budowy.

W tej chwili każdy plik źródłowy jest skompilowany do całkiem dużego pliku wykonywalnego, jest on pakowany (ręcznie) i wysyłany do obszaru pobierania. Wszystko w porządku.

Ale celem, do którego zmierzam, jest modularyzacja aplikacji w taki sposób, że każda "cecha" zostanie skompilowana do udostępnionej biblioteki, a użytkownik (programista) będzie mógł wybrać składniki, które chce skompilować. Te "funkcje" są umieszczane w katalogach w drzewie źródłowym (na przykład: query_builder, reverse_engineer, mysql_DB_support, katalogi version_managemen, etc ...) i kiedy użytkownik buduje aplikację, po prostu mówi systemowi kompilacji, aby skompilował aplikację za pomocą konstruktora zapytań i mysql, ale bez inżynierii wstecznej iw tym przypadku system kompilacji dodaje pliki źródłowe z określonego katalogu i tworzy z niego lib.

również mieć inne wymagania, takie jak:

  • okna budowy Linux budowy
  • ewentualnie zbudować opakowania (DEB rpm)
  • pomocy Qt i ewentualnie QT5
  • wielu plików wykonywalnych (GUI klient, klient CLI)

Po pewnym "badaniu rynku" skończyłem z CMake i SCons jako dwoma możliwymi sy łodygi, które mogę wykorzystać. Mam pewne doświadczenie CMake i trochę doświadczenia Pythona, ale nie SCons jeszcze.

Ale nie wiem, który z nich jest najlepszy dla mojej sprawy, tu potrzebuję twojej pomocy. Czy mógłbyś rozwinąć, z czego powinienem skorzystać? A jeśli uznasz, że moje wymagania są osiągalne z qmake, daj mi znać również,

Pozdrawiam, f.

+1

Polecam CMake za to.Świetnie sprawdza się z Qt w oknach (używam go od 2008 roku w zasadzie dla każdego projektu w pracy i w domu) i linuxie i obsługuje opcjonalne komponenty, takie jak opisujesz. Mimo to powiedziałem, że nie używam sconów, więc nie mogę ich porównać. – drescherjm

Odpowiedz

7

Nie ma poprawną odpowiedź na to pytanie, a to zazwyczaj sprowadza się do osobistych preferencji, niby-lubią vi kontra emacs (prawidłowa odpowiedź jest vi, oczywiście :)

Należy zbadać zalety i minusy każdego i ocenić, w jaki sposób pasują one do twoich wymagań i potrzeb.

Jestem stronniczy wobec SCons, głównie dlatego, że nie mogę znieść składni CMake, ale to jest osobiste preferencje.Oto niektóre zalety i wady każdego z nich, jak ja to widzę:

CUpewnij

Plusy:

  • podobne do QMake, biorąc pod uwagę, że jest generatorem Makefile
  • CUpewnij jest szeroko stosowany, więc jest wiele odniesień i pomocy dostępnych
  • Ma GUI (sam nie wiem , Na podstawie uwag Calvin1602 poniżej)

Wady:

  • CUpewnij ma swój własny, wymyślony składni, które wielu uważa (w tym ja) nie jest intuicyjne.
  • 2 etap procesu kompilacji, najpierw utworzyć Makefile, a następnie wykonują kompilację
  • następnym niemożliwe do odczytania wygenerowany Makefile

SCons

Zalety:

  • Składnia jest P ython, który jest powszechnie używany i stosunkowo łatwy do nauczenia. (i Python jest fajny :)
  • Proces kompilacji jest jednym krokiem, wystarczy uruchomić SCons i kompiluje. Brak pośrednich plików kompilacji do generowania lub utrzymywania.
  • W przeszłości SCons był wolniejszy niż CMake, ale od tego momentu jest znacznie szybszy, prawdopodobnie tak szybki lub szybszy niż CMake, ponieważ nie musi generować plików Makefile.
  • Bogaty zestaw funkcji, a wiele języków obsługiwane, natomiast CUpewnij koncentruje się w kierunku C/C++
  • bardzo dokładne, niejawnego systemu zależność: nie trzeba podać listę nagłówków zależnych, biblioteki, itp Jawne zależności mogą być określone w razie potrzeby.
  • Dodatek zaćmienie jest dostępny. Eclipse ma również wtyczki dostępne dla Pythona.
  • Ma narzędzia utworzone dla projektów Qt do obsługi MOC i innych powiązanych kodegenu, jak wspomniano: here.

Wady:

  • SCons nie może być tak szeroko stosowane jako CMake, ale jest jeszcze wiele wsparcia dostępnego.
  • W zależności od rozmiaru projektu, SCons może używać dużej ilości pamięci, ponieważ analizuje wszystkie skrypty kompilacji i buduje drzewo zależności w pamięci przed faktycznym kompilowaniem czegokolwiek. Pozwala to jednak na dokładniejsze sprawdzanie zależności.
+0

Dodam, że CMake ma niesamowity GUI, w którym możesz wybrać, które części chcesz skompilować. – Calvin1602

+0

@ Calvin1602 Nie wiedziałem o tym. Czy GUI jest częścią CMake, czy jest to dodatkowa aplikacja? Czy ten GUI działa zarówno w systemie Windows, jak i Linux? – Brady

+0

Jest to część CMake. Z Linuksa uruchom cmake-gui. Z Windows i Mac, kliknij na ikonę =). Istnieje również ccmake, odpowiednik GUI w linii poleceń. Stąd możesz ustawić dowolną zmienną dowolnego typu (są one zadeklarowane w CMakeLists.txt) – Calvin1602