Newsgroup: it.comp.os.linux.development
Titolo: Software per shell multipiattaforma.

Ciao, volevo chiedere ai più esperti qual'è il modo migliore per ottenere
software il più portabile possibile, e che le inevitabili differenze (per
le quali con il preprocessore e' possibile sistemare) siano trasparenti
all'utente che va poi a compilare il codice.
Il problema non si pone quando programmo con wxWindows, ma anche per un
semplice programma shell a volte sono in difficoltà.
Nel mio codice cerco di usare sempre istruzioni POSIX presenti sia su
Windows che su Unix/Linux, quando questo non e' possibile, uso il
preprocessore, es.
#ifdef __WIN32__
...
#endif
#ifdef UNIX
...
#endif
Il mio problema e' questo. Tutti i compilatori per Windows creano
automaticamente il simbolo __WIN32__, ma quando compilo sotto Linux devo
forzare nella linea della compilazione il parametro -D UNIX.
Meglio ancora scrivere AM_CXXFLAGS = -D UNIX nel Makefile.am
La domanda e' questa: esiste un metodo, migliore di questo, per essere
sicuri che il preprocessore abbia informazioni sulla piattaforma per la
quale sta compilando il software?
Grazie.

 software il più portabile possibile, 
beh non so se è quello che stai cercando ... ma Python è mooolto
portabile :-)
-- 
Cogito ergo spud! (I think, therefore I yam).
 |\ |       |HomePage   : 
http://nem01.altervista.org
 | \|emesis |XPN (my nr): 
http://xpn.altervista.org

 un semplice programma shell a volte sono in difficoltà.
  Io ti suggerisco Tcl/Tk.
  Ha praticamente tutti i comandi di una shell anche se GNU Bash, ad
  esempio è assai più comoda, ma ci puoi stare se abbisogni:
  - di portabilità immediata verso Mac, winxx 
  - di una GUI
Es.,copia di due file in Tcl:
------------------------------------------8<-----------------------
% file copy source_file dest_file
------------------------------------------8<-----------------------
  Tcl e' un linguaggio un po' sui generis, con alcuni difetti, (vedi:
  The TCL war, famosissima...)  ma Tk per leggerezza, portabilità e
  facilità d'impiego è eccelso:
------------------------------------------8<-----------------------
#!/usr/bin/wish
button .b -text "Spingimi" -command {exec xterm }
pack .b
------------------------------------------8<-----------------------
	Per eseguirlo in ambiente win, dovresti avere installato
	l'interprete; tuttavia, esiste Tclkit che è un interpete di
	meno di un mega che puoi usare per avviare il tuo programma;
	ma c'è un'altra possibilità:
 	usare ``freewrap'' o creare uno dei cosiddetti ``starkits''
	che sono due modi possibili per impacchettare insieme il
	binario tclkit per la piattaforma che ti interessa, e il tuo
	codice tcl. così da ottenere, per esempio:
	prog.exe
	che l'utente finale può avviare lanciando l'eseguibile, che in
	realtà non è altro che un pacchetto compresso contenente
	l'interprete ed il codice. Tutto in uno.
 
	Per far questo si usa il programma sdx.kit.
 
	Personalmente, ho creato su Linux una piccola GUI e
	impacchettato con il runtime per windows. Funziona, senza
	battere ciglio.
 
	Se l'argomento ti interessa, possiamo scambiare qualche parola
	in merito, è tempo che mi pongo lo stesso tuo problema, e ho
	abbandonato wxWindows perchè non mi piace essere costretto ad
	usare C++. Sono, per così dire, un ANSI-C-a-bestia. :)
	Ci sono per giunta altre possibilità:
	- includere l'interpete nel tuo codice C/C++ 
	- Usarne le librerie da dentro i propri programmi
	Entrambe le cose sono permesse dalla licenza.
	Hope this helps...
	Paolo
-- 
<!--_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
                      The Unix Hacking Pages
 
www.lulli.net
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-->

 quale sta compilando il software?
Direi che autoconf e' fatto apposta.
-- 
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.yoda2000.net
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail** 
-<! There are 10 kind of persons: who understands binary and who doesn't. !>-