Używam CMake do generowania moich projektów IDE / makefiles, ale nadal muszę wywoływać niestandardowe „skrypty”, aby manipulować moimi skompilowanymi plikami, a nawet generować kod.
W poprzednich projektach korzystałem z Pythona i było OK, ale teraz mam poważne problemy z zarządzaniem wieloma zależnościami w dwóch bardzo dużych projektach, nad którymi pracuję, więc chcę wszędzie zminimalizować zależności.
Ktoś zasugerował mi użycie C ++ do pisania moich skryptów kompilacji zamiast dodawania tylko zależności językowej. Same projekty już używają C ++, więc widzę kilka zalet:
- do zbudowania całego projektu potrzebny byłby tylko kompilator C ++ i CMake, nic więcej (wszystkie pozostałe zależności to C lub C ++);
- Bezpieczeństwo typu C ++ (przy użyciu nowoczesnego C ++) ułatwia wszystko, aby uzyskać „poprawność”;
- jest to również język, który znam lepiej, więc jestem z nim swobodniejszy, nawet jeśli jestem w stanie napisać dobry kod Pythona;
- potencjalny wzrost prędkości wykonania (ale nie sądzę, że będzie to naprawdę odczuwalne);
Myślę jednak, że mogą być pewne wady i nie jestem pewien prawdziwego wpływu, ponieważ nie próbowałem jeszcze:
- pisanie kodu może być dłuższe (to powiedziawszy nie jestem pewien, ponieważ jestem wystarczająco wydajny w C ++, aby napisać coś, co działa szybko, więc może dla tego systemu pisanie nie byłoby tak długie) (czas kompilacji nie powinien problem będzie w tym przypadku);
- Muszę założyć, że wszystkie pliki tekstowe, które czytam jako dane wejściowe, znajdują się w UTF-8, nie jestem pewien, czy można je łatwo sprawdzić w środowisku wykonawczym w C ++, a język tego nie sprawdzi;
- bibliotekami w C ++ jest trudniej zarządzać niż w językach skryptowych;
Brakuje mi doświadczenia i zdolności przewidywania, więc może brakuje mi zalet i wad. Pytanie brzmi: czy ma sens używać do tego C ++? czy masz doświadczenia do zgłoszenia i czy widzisz zalety i wady, które mogą być ważne?
źródło
Odpowiedzi:
Po prostu użyj Pythona.
Rozwijam się w C ++ i robię skrypty budowania w Pythonie, i bolesne byłoby tworzenie skryptów kompilacji w C ++:
Jeśli chodzi o zalety, które wymieniasz dla C ++:
źródło
Uważam, że jest to pytanie dotyczące konkretnego przypadku. Twierdzę, że nie ma poprawnej odpowiedzi na pytanie, czy ma to sens, czy nie używać C ++ do tworzenia skryptów, jedynym sposobem na znalezienie tego jest wypróbowanie go w praktyce.
Osobiście widziałbym, że Python jest lepszy od C ++ ze względu na lepszą ekspresję języka i łatwiejsze (oczywiście osobiste zdanie) standardowe narzędzia biblioteczne do zarządzania zadaniem manipulowania plikami binarnymi i generowania kodu. Oczywiście mogą być dostępne zaawansowane biblioteki opracowane dla tego zadania, ale jeśli nie, to osobiście zdecydowanie postawiłbym na to, że Python będzie „częściej poprawną” odpowiedzią - w ogólnym przypadku.
źródło
Nie pisz skryptów samodzielnie, duplikujesz wysiłek i ponownie wymyślasz koła.
Użyj czegoś takiego jak SCONS lub nawet Maven 3, który obsługuje systemy kompilacji C ++ .
Dobry system kompilacji, niezależnie od języka, nie powinien wymagać niestandardowej logiki w postaci skryptów do zbudowania działającego artefaktu wykonywalnego.
Jeśli musisz pisać skrypty dla systemu kompilacji, aby go dostosować, nie jest to dobry system kompilacji. Napisanie wtyczki do systemu kompilacji to inna historia, ale nadal powinno to być szczególnie specyficzne dla środowiska / sprzętu i powinno być czymś, do czego rzadko się ucieka.
źródło
Aby skoncentrować się na pytaniu:
Odpowiedź jest prosta: nie .
Aktualnie akceptowana odpowiedź zmienia się w python i zawiera listę wielu ważnych problemów, ale chciałbym dodać powód niezależny od języka:
Naprawdę nie chcesz pisać skryptów w żadnym skompilowanym języku, jeśli możesz pomóc:
Ponadto, idąc z inną odpowiedzią:
Prawdopodobnie nie chcesz także używać „surowego” języka skryptowego do tworzenia skryptów kompilacji (rozumiem, że CMake będzie obsługiwał zawiłości C ++).
To, co prawdopodobnie powinieneś zrobić, to wybrać jedną z Kompilacji . Systemy . out . tam . i sprawdź, czy pasuje do twojego wrt rachunku. skryptowalność / rozszerzalność / play-nice-with-CMake / crossplatformness.
źródło