[Solved]Gedit i tworzenie nowego narzędzia zewnętrznego

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
lyrix
Piegowaty Guziec
Piegowaty Guziec
Posty: 14
Rejestracja: 03 lip 2008, 15:11
Płeć: Mężczyzna
Wersja Ubuntu: 8.04
Środowisko graficzne: GNOME
Kontakt:

[Solved]Gedit i tworzenie nowego narzędzia zewnętrznego

Post autor: lyrix »

Witam Szanownych Forumowiczów,

nie znalazłem na forum żadnego posta, który rozwiązałby mój problem (tak że z góry przepraszam jeśli nieefektywnie szukałem), a w Bashu jeszcze niezbyt dużo pisałem. Mianowicie chciałbym tak skonfigurować Gedita, żebym bezpośrednio za jego pomocą kompilował dopiero co napisany w nim kod źródłowy. Chcę do tego użyć Narzędzia Zewnętrznego i chce zdefiniować to narzędzie w Menadżerze Narzędzi Zewnętrznych. Do tego celu muszę napisać mały skrypt, który kod źródłowy napisany w aktywnej karcie Gedita (załóżmy ze na tej aktywnej karcie będzie otwarty zapisany na dysku już plik, aczkolwiek bardzo chętnie napisałbym taki skrypt, który w przypadku niezapisanego na dysku pliku uruchamiałby okno do zapisania tegoż pliku) po wybraniu polecenia Kompiluj C++ (tak nazwać chcę to polecenie). Ogólny zarys skryptu byłby taki:

Kod: Zaznacz cały

#!/bin/bash

g++ -Wall -o nazwa_pliku_w_aktywnej_karcie nazwa_pliku_w_aktywnej_karcie.cpp
Składnię (tj. g++ -Wall -o plik_wynikowy plik_źródłowy.cpp) wziąłem z przykładu na http://czytelnia.ubuntu.pl/index.php/20 ... ie-ubuntu/

Mam jednak problem, jaką uniwersalną zmienną zastosować zamiast nazwa_pliku_w_aktywnej_karcie tak aby za każdym razem kompilował mi plik na aktywej karcie Gedita Domyślam się, ze rozwiazanie tego problemu jest pewnie banalne, ale poki co raczkuję w Bashu, więc będę gorąco wdzięczny za rozwiązanie lub jakiekolwiek wskazówki.

pozdrawiam :)
pacey
Sędziwy Jeż
Sędziwy Jeż
Posty: 31
Rejestracja: 09 wrz 2008, 17:04
Płeć: Mężczyzna
Wersja Ubuntu: 9.10
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: Gedit i tworzenie nowego narzędzia zewnętrznego

Post autor: pacey »

Jest już późno i nie umiem za dobrze czytać o tej porze,ale chyba jest to zmienna $_1

czyli wywołujemy:

./mojSkrypt ala.cpp

i wtedy w skrypcie $_1=ala.cpp

Jeżeli się nie mylę
lyrix
Piegowaty Guziec
Piegowaty Guziec
Posty: 14
Rejestracja: 03 lip 2008, 15:11
Płeć: Mężczyzna
Wersja Ubuntu: 8.04
Środowisko graficzne: GNOME
Kontakt:

Odp: Gedit i tworzenie nowego narzędzia zewnętrznego

Post autor: lyrix »

czyli wywołujemy:

./mojSkrypt ala.cpp
Ten skrypt musi być napisany tylko raz, na użytek Narzędzia Zewnętrznego w Gedicie, więc Gedit po naciśnięciu przeze mnie "Kompiluj C++" sam ten skrypt wywoła (ten skrypt nie ma nazwy).

Chodzi mi właśnie o to, jaka zmienna w Bashu (ten skrypt będzie na użytek tylko i wyłącznie Gedita, bo zostanie napisany w jego "ustawieniach") reprezentuje aktualnie otwarty na karcie w Gedicie dokument.

Probowałem z $_1 i nie działa.

Kod wygląda tak:

Kod: Zaznacz cały

#!/bin/bash

g++ -Wall -o $_1 $_1.cpp
I Gedit wyświetla komunikat:

Kod: Zaznacz cały

Uruchamianie narzędzia: Kompiluj C++

g++: brak plików wejściowych

Zakończono: 256
EDIT:
Chciałbym dodać, że dla polecenia "make" wywoływanego z Gedita kod jest taki:

Kod: Zaznacz cały

#!/bin/sh

EHOME=`echo $HOME | sed "s/#/\#/"`
DIR=$GEDIT_CURRENT_DOCUMENT_DIR
while test "$DIR" != "/"; do
    for m in GNUmakefile makefile Makefile; do
        if [ -f "${DIR}/${m}" ]; then
            echo "Using ${m} from ${DIR}" | sed "s#$EHOME#~#" > /dev/stderr
            make -C "${DIR}"
            exit
        fi
    done
    DIR=`dirname "${DIR}"`
done
echo "No Makefile found!" > /dev/stderr
Moze teraz ktos pomoze mi go tak przerobić, zeby daloby sie go zastosowac do kompilowania dokumentu w aktywnej karcie Gedita za pomocą g++. Z gory dziekuje

EDIT:
Witam

oto rozwiązanie, w sformułowaniu którego bardzo pomógł mi acrtgx z forum linux.pl (za co wielkie dzięki :)).

Zmienną basha reprezentującą aktywną kartę w Gedicie jest ${GEDIT_CURRENT_DOCUMENT_NAME} a inne zmienne są tutaj: http://live.gnome.org/Gedit/ToolLauncherPlugin

Skrypcik wygląda tak:

Kod: Zaznacz cały

#! /bin/bash

g++ -Wall ${GEDIT_CURRENT_DOCUMENT_NAME} -o ${GEDIT_CURRENT_DOCUMENT_NAME%.cpp}
%.cpp obcina nam w skompilowanym pliku wynikowym rozszerzenie ".cpp"

Teraz już można kompilować napisane w Gedicie programy klikając na odpowiednie polecenie z menu ;).

A czy warto używać bardziej rozbudowanych IDE typu Eclipse itp ? Ogólnie mam pytanie, co wchodzi w skład pakietu takiego jak Eclipse czy NetBeans (czy jest to tylko bardzo rozbudowany edytor czy tez dodatkowe biblioteki, które standardowo w Ubuntu nie są dostępne, a które warto mieć)?
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 7 gości