2011-07-25 18 views
5

Mam projekt Eclipse, który musi automatycznie generować niektóre pliki przed kompilacją. Nie chcę umieszczać tych automatycznie generowanych plików w moim repozytorium, więc za każdym razem, gdy kompiluję projekt, wykonuję wstępną kompilację, aby automatycznie generować te pliki.Jak mogę skompilować automatycznie wygenerowane pliki C w wersji wstępnej?

Problemem jest to, że auto generowane są pliki * .c i * .h plików, a po raz pierwszy mogę skompilować projekt, dodaje się dzieje (w tej kolejności):

  • pre- budowa: automatycznie wygenerować jakiś * .c i * .h
  • build: zaćmienie nie będzie budować ten auto generowanych plików

Gdybym ponownie skompilować, to pliki zostaną skompilowane. Może tak się dzieje z powodu odkrycia, jakie pliki skompiluje środowisko. Przed rozpoczęciem kompilacji nie mamy tych automatycznie generowanych plików * .c i * .h.

Po raz drugi kompilujemy, mamy już te automatycznie generowane pliki, więc te pliki są kompilowane.

Odpowiedz

0

Jeśli dobrze rozumiem twoje pytanie, wygląda na to, że po raz pierwszy zbudujesz projekt automatycznie wygeneruje niezbędne pliki * .c i * .h, ale projekt nie powiedzie się w pełni, ponieważ te pliki źródłowe nie są znaleźć natychmiast. Po niewielkim opóźnieniu Eclipse rozpoznaje, że do projektu zostały dodane nowe pliki, które można następnie zbudować po raz drugi i wszystko będzie przebiegać normalnie. Czy to brzmi poprawnie?

Zakładając, że tak jest, moją natychmiastową myślą jest napisanie jakiegoś skryptu lub pliku makefile, aby wszystkie te akcje mogły być wykonane we właściwej kolejności, za pomocą jednej akcji. W zależności od stopnia zabrudzenia chcesz dostać w swoje ręce, oto link;)

http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.cdt.doc.user/concepts/cdt_c_makefile.htm

4

Jeśli chcesz pełną kontrolę nad tym, kiedy dokładnie krok zwyczaj budowania zajmuje miejsce, które wymagają odświeżenia po nim pliki środowisko, katalog roboczy itp. nie określaj go jako prostego kroku do wstępnej kompilacji. Przejdź do właściwości projektu -> Builders -> New ... i wybierz "Program".

W wyświetlonym oknie dialogowym masz większą kontrolę nad wykonywaniem narzędzia. Na przykład możesz uruchomić swoje narzędzie za każdym razem, gdy plik XML zostanie zapisany, i możesz nakazać Eclipse, aby odświeżył wszystkie automatycznie wygenerowane pliki, gdy tylko zostanie uruchomiony.

+0

Dzięki, to rozwiązało mój problem. Tylko jedna uwaga: jeśli problem dotyczy więcej niż jednego projektu, konieczne będzie zduplikowanie tego budowniczego, ponieważ wydaje się, że nie jest możliwe zaimportowanie tej samej instancji. Nazwy budowniczych muszą być różne (na przykład: dodawanie (1) na końcu). Możliwe jest uproszczenie duplikowania budowniczych poprzez utworzenie szablonu za pomocą polecenia "Uruchom> Narzędzia zewnętrzne> Otwórz konfigurację zewnętrznych narzędzi -> Nowe", ale będzie to działać tylko dla innych członków projektu, jeśli obszar roboczy jest pod kontrolą wersji (i zwykle nie jest). – mMontu

+0

@mMontu Możesz udostępnić zewnętrzne konfiguracje narzędzi i zachować je pod kontrolą wersji, jeśli przejdziesz do zakładki "Wspólne" w konfiguracji konfiguracji i wybierz opcję "Udostępniony plik". Myślę jednak, że ostatecznie żadna niebanalna konfiguracja kompilacji nie powinna w żaden sposób zależeć od systemu budowania IDE. W ostateczności właściwym rozwiązaniem jest użycie prawdziwego systemu budowy, takiego jak CMake. – enobayram

+0

Rzeczywiście, nie wiedziałem o opcji "Udostępniony plik". Zgadzam się na unikanie systemu budowania IDE, ale nie zawsze jest to możliwe, gdy mamy do czynienia ze starszymi (i dużymi) projektami. – mMontu

Powiązane problemy