Chciałbym uruchamiać codzienne kompilacje lub rejestrować / zatwierdzać uruchamiane kompilacje projektów opartych na Keil MDK-ARM. Do tej pory mam problemy z funkcją pliku wsadowego IDE. Wymaga to zbudowania projektu przynajmniej raz za pomocą IDE, a następnie odprawy pliku wsadowego i powiązanych .__i
oraz ._ia
plików utworzonych przez IDE.
Ponadto IDE umieszcza wiele plików specyficznych dla użytkownika w pliku wsadowym, takich jak zmienna PATH systemu Windows. Może to stać się problemem dla wielu programistów, ponieważ plik wsadowy do budowania może być zmieniany przy każdym zatwierdzeniu od innego programisty.
Ostatecznie wystarczy śledzić różne przełączniki armcc , armasm i ArmLink .
Czy istnieje sposób na użycie bardziej standardowego makefile do budowy projektów Keil uVision? Czy istnieje metoda tłumaczenia pliku projektu uVision na łatwiejszy w utrzymaniu skrypt kompilacji?
Odpowiedzi:
To najlepsza metoda, jaką ostatnio wymyśliłem:
W opcjach kompilacji wybierz opcję Utwórz plik wsadowy.
Po zainicjowaniu kompilacji z IDE tworzony jest plik wsadowy wraz z kilkoma plikami tekstowymi w oparciu o opcje ustawione w IDE. Musisz śledzić te pliki generowane przez IDE w kontroli źródła:
Następnie foo.bat można uruchomić ze skryptu kompilacji.
Mimo że tworzy to dodatkowe pliki, które należy śledzić w kontroli źródła, jeśli chcesz budować niezawodnie z wygenerowanego pliku wsadowego, nie trzeba jednak polegać na pliku projektu Keil (foo.uvproj) i IDE. Łatwiej jest mi porównać różnice, a tym samym śledzić zmiany, w wygenerowanych plikach tekstowych (* .__ i), które zawierają flagi kompilatora, niż w pliku .uvproj. Dodatkowo plik wsadowy wywołuje bezpośrednio różne narzędzia, armasm, armcc, armlink. Daje to bezpośredni wynik każdego z tych kroków, a także pozornie lepszy potencjał migracji projektu do innego łańcucha narzędzi w przyszłości, jeśli to konieczne.
Zdaję sobie sprawę, że ta odpowiedź brzmi bardzo podobnie do mojego pierwotnego pytania, ale naprawdę nie znam lepszego sposobu uruchamiania kompilacji skryptowej za pomocą narzędzi Keila. Poprosiłem, aby zobaczyć, co może pochodzić od innych. Nie do końca nie zgadzam się z odpowiedzią @digikata, ale wolę mieć flagi kompilatora i mapę pamięci w łatwiejszym formacie do śledzenia i używać do kompilacji więcej narzędzi w stylu uniksowym niż uruchamiać kompilację typu „wszystko w jednym” z IDE. Myślę, że kompilacja kompleksowa z IDE działa dobrze na mojej stacji roboczej, ale nie na serwerze kompilacji.
EDYCJA : Serwer kompilacji działa w systemie Windows Server 2003. Muszę wyznać, że wolę używać interfejsu wiersza poleceń IDE zamiast pliku wsadowego. To po prostu stało się zbyt trudne do opanowania.
źródło
Wywołuję Keil IDE za pomocą wiersza poleceń, aby zbudować (nie wygenerowany plik wsadowy) z poziomu pliku Makefile. Zwykle lepiej jest zablokować pliki projektu za pomocą scm lub wziąć kopię kompilacji odniesienia, zmieniając nazwy odpowiednich nazw projektów.
IDE jest całkowicie zadowolony z pracy z plikami projektów tylko do odczytu, więc jeśli je zablokujesz, drażniące jest to, że musisz je odblokować, aby zmienić ustawienia, zapisać i sprawdzić je ponownie. Jeśli jesteś dość stabilny punkt w projekcie jest to dość niewielkie - a nawet pożądane.
Jeśli weźmiesz kopię referencyjną, kompilacja ma tendencję do psucia się wraz ze zmianami ustawień projektu - zwłaszcza gdy pliki projektu są dodawane lub usuwane z kompilacji. Wyraźne uchwycenie tych zmian niekoniecznie jest złe, ale stanowi dodatkowy krok konieczny do utrzymania kompilacji.
Tak czy inaczej, przekierowanie danych wyjściowych do pliku dziennika za pomocą opcji „-o” umożliwia dostęp do pełnego dziennika wyjściowego. Dziennik nie wychodzi po linii, ale wydaje się, że wszystko tam jest. (Właściwie analizuję format błędu Keil do GNU fmt w celu integracji ze środowiskiem CDT Eclipse. To pozwala mi przejść bezpośrednio do błędów / ostrzeżeń po kompilacji)
Kompilacja z wiersza poleceń generuje również pliki __i, __ia, więc nie muszą one również wchodzić w kontrolę wersji dla serwera kompilacji.
Mam nadzieję że to pomoże.
źródło