Nowe posty

Autor Wątek: [c++] kompilcja z uruchamianiem/plik jako parametr?  (Przeczytany 4300 razy)

kriss123456

  • Gość
[c++] kompilcja z uruchamianiem/plik jako parametr?
« dnia: 2009-02-07, 12:38:44 »
Witam!
od razu mówie ze z Linuxa jestem zielony a z c++ poczatkujacy ale mam dwa pytania.
1. Czy w konsoli linuxa (terminalu), da sie jednym poleceniem skompilowac i uruchomic program.??
do tej poru robilem to na zasadzie: g++ progr.cpp, i dopiero drugim poleceniem: ./a.out.
Chcialbym zrobic to za jednym zamachem :) (najlepiej z komenda g++).

2. Stworzylem prosty program, ktorego zadaniem jest  szyfrowanie plikow. Chcialbym aby plik poddawany szyfrowaniu mogl byc wybierany na poziomie kompilacji, ewentualnie uruchamiania programu. Chodzi o to, ze wpisuje w konsoli przykladowo: ./a.out wiadomosc.txt, i program szyfruje mi plik o nazwie wiadomosc.txt (oczywiscie jakies atrubyty tam pewno trzeba dopisac tylko nie wiem jakie). Do tej pory mialem tak, ze uzytkownik podawal nazwe pliku podczas dzialania programu, program go pytal a on wprowadzal. teraz bym chcial aby  wybor byl dokonany juz na poziomie uruchamiania. i jeszcze najlepiej jakby mi ktos napisal jak temu plikowi, przypisac uchwyt w programie.

mam nadzieje ze jasno wyrazilem swoje pytanie :)
Z gory dziekuje za pomoc.

marecki1984

  • Gość
[c++] kompilcja z uruchamianiem/plik jako parametr?
« Odpowiedź #1 dnia: 2009-02-07, 13:20:21 »
1) raczej cos takiego nie da sie zrobic... moze g++ prog.cpp -o prog && ./prog

2)

#include

using namespace std;

int main(int argc, char * argv[])
{

cout << "to jest ten parametr: " << argv[1] << endl;

return 0;
}

i uruchamiasz to: ./prog parametr

ZipoKing

  • Gość
[c++] kompilcja z uruchamianiem/plik jako parametr?
« Odpowiedź #2 dnia: 2009-02-07, 13:41:37 »
Odnośnie punktu pierwszego możesz napisać prosty skrypt (np. nazwij go cc_and_run.sh, nadaj mu też uprawnienia wykonania przez chmod a+x ./cc_and_run.sh) o następującej treści:
Kod: sh [Zaznacz]

#!/bin/sh
g++ -o ./program
#!/bin/sh
g++ -o ./program $1
./program

./program

i następnie jednym poleceniem: ./cc_and_run.sh program.cpp skompilujesz i uruchomisz program.
Jeżeli do tego programu chcialbyś dodać jakiś parametr (jak w pkt. 2), możesz uruchmić ten skrypt jako ./cc_and_run.sh program.cpp wiadomosc.txt a sam skrypt wyglądałby następująco:

Kod: sh [Zaznacz]

#!/bin/sh
g++ -o ./program
#!/bin/sh
g++ -o ./program $1
./program $2

./program sh

jk33

  • Gość
[c++] kompilcja z uruchamianiem/plik jako parametr?
« Odpowiedź #3 dnia: 2009-02-07, 13:41:43 »
ad 1)
Można. słowa kluczowe: make, makefile, implicit rules

Offline ultr

  • Users
  • Guru
  • *****
  • Wiadomości: 1177
    • Zobacz profil
[c++] kompilcja z uruchamianiem/plik jako parametr?
« Odpowiedź #4 dnia: 2009-02-07, 13:43:05 »
Do kompilacji warto zrobić sobie plik Makefile. Wpisujesz w niego:
all:
g++ progr.cpp -o progr
(przed g++ musi być znak tabulacji)
Potem można kompilować pisząc po prostu `make`.

Czyli, podobnie jak pisał marecki1984:
make && ./progr
Jeśli make (czyli g++) się powiedzie, to uruchomi program. Jeśli nie, to zakończy się na błędach kompilacji.
Możesz też dodać uruchomienie programu do Makefile.




Jeśli chcesz wkompilować jakąś stałą, to możesz użyć:
g++ -DNAZWA="plik.txt" progr.cpp -o progr
A w kodzie programu:
#ifndef NAZWA
  #define NAZWA "domyslnyplik.txt"
#endif
Ale znacznie lepiej używać parametrów programu (argv[1]).





Co do operacji na plikach, to możesz używać fstream:
- http://www.cplusplus.com/doc/tutorial/files.html
- http://www.cplusplus.com/reference/iostream/ifstream/
- http://www.cplusplus.com/reference/iostream/ofstream/
albo standardowego fopen:
- http://www.cplusplus.com/reference/clibrary/cstdio/fopen.html
albo oczywiście jakiś bibliotek, typu QFile z bibliotek Qt.

kriss123456

  • Gość
[c++] kompilcja z uruchamianiem/plik jako parametr?
« Odpowiedź #5 dnia: 2009-02-07, 13:50:29 »
super dzieki za wszystkie odpowiedzi bardzo mi sie przydaly :))
szczegolnie argv[1] :]
ale pozostale tez sa bardzo ciekawe i na pewno je wyprobuje.
Pozdrawiam.