/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Opsætning af multi-platform C++ projekt
Fra : Christian Larsen


Dato : 04-11-04 23:00

Hej NG!

Jeg overvejer/er ved at skifte platform fra Windows til fortrinsvis Linux,
og jeg er blevet fascineret af muligheden for at skrive programmer, som
kan compile og køre på begge platforme. Nu har jeg således været ved
at researche lidt, hvorvidt det er muligt at benytte samme opsætning af
projektet på tværs af systemerne, så jeg slipper for at vedligeholde to
opsætninger, og jeg er nået frem til, at jeg nok skal kigge nærmere på
"GNU Autotools" og "Cygwin" eller "Mingw32", men da jeg ikke er nogen haj
(læs: totalt grøn) med hensyn til makefiler osv. vil jeg høre jer, hvad
I har af ideer og erfaringer. Det er ikke større projekter vi snakker om
(kun som hobby foreløbigt).

Mine spørgsmål går fx på, om det er muligt at skrive et bundt
kildefiler, hvor nogle dele kun benyttes i på én platform, således at
jeg fx kan skrive specialiserede klasser til hvert system. Det er mit
indtryk, at Cygwin nærmest laver et Unix-lag oven på Windows, men jeg
vil også gerne fx kunne tilgå Windows API'en, så der er mulighed for
optimering til det system. Windows-udgaven skal således helst ikke kræve
samme placering af filerne som Linux-udgaven, hvor den eksekverbare fx
ligger i /usr/local/bin eller lignende.

Jeg har prøvet at søge på opskrifter på at opsætte sådan et projekt,
men jeg synes det er svært at finde noget, der er overskueligt. De fleste
kilder er meget tekniske, men jeg har måske mest brug for et ganske lille
eksempel-projekt, som jeg kan tage udgangspunkt i. Håber I kan hjælpe
mig i gang ;)

Venlig hilsen
Christian Larsen

 
 
Bertel Brander (05-11-2004)
Kommentar
Fra : Bertel Brander


Dato : 05-11-04 00:18

Christian Larsen wrote:
> Hej NG!
>
> Jeg overvejer/er ved at skifte platform fra Windows til fortrinsvis Linux,
> og jeg er blevet fascineret af muligheden for at skrive programmer, som
> kan compile og køre på begge platforme. Nu har jeg således været ved
> at researche lidt, hvorvidt det er muligt at benytte samme opsætning af
> projektet på tværs af systemerne, så jeg slipper for at vedligeholde to
> opsætninger, og jeg er nået frem til, at jeg nok skal kigge nærmere på
> "GNU Autotools" og "Cygwin" eller "Mingw32", men da jeg ikke er nogen haj
> (læs: totalt grøn) med hensyn til makefiler osv. vil jeg høre jer, hvad
> I har af ideer og erfaringer. Det er ikke større projekter vi snakker om
> (kun som hobby foreløbigt).
>
> Mine spørgsmål går fx på, om det er muligt at skrive et bundt
> kildefiler, hvor nogle dele kun benyttes i på én platform, således at
> jeg fx kan skrive specialiserede klasser til hvert system. Det er mit
> indtryk, at Cygwin nærmest laver et Unix-lag oven på Windows, men jeg
> vil også gerne fx kunne tilgå Windows API'en, så der er mulighed for
> optimering til det system. Windows-udgaven skal således helst ikke kræve
> samme placering af filerne som Linux-udgaven, hvor den eksekverbare fx
> ligger i /usr/local/bin eller lignende.
>
> Jeg har prøvet at søge på opskrifter på at opsætte sådan et projekt,
> men jeg synes det er svært at finde noget, der er overskueligt. De fleste
> kilder er meget tekniske, men jeg har måske mest brug for et ganske lille
> eksempel-projekt, som jeg kan tage udgangspunkt i. Håber I kan hjælpe
> mig i gang ;)
>

Mange store spørgsmål, lad os tage dem lidt af gangen.

Glem alt om autotools (automake/autoconfig/...) indtil du skal
lave projecter med MANGE filer (> 100) og som skal kunne køre på
ALLE platfrorme.

For små projecter kan du let "nøjes" med en hjemmelavet makefil,
evt. en for hver system eller en med nogle få if's.

For en Linux lignende platform på Windows foretrækker jeg
MinGW over Cygwin. Mingw er mere stabil og meget mindre,
men cygwin's mere komplet i sin Linux emulering.

Du kunne oveveje at bruge wxWidgets eller QT til at indkapsle
Windows API'et, så får du oveni det samme API på Linux (og
andre platforme). wxWidgets er vist den der ligner Windows mest
men nogen synes at QT er bedre designet.

http://www.wxwidgets.org/
http://www.trolltech.com/

--
Juliet: What's in a name? that which we call a rose
By any other name would smell as sweet; ...
Romeo: I take thee at thy word:
Call me but love, and I'll be new baptized;

Ukendt (07-11-2004)
Kommentar
Fra : Ukendt


Dato : 07-11-04 23:04

Bertel Brander <bertel@post4.tele.dk> wrote in
news:418ab887$0$246$edfadb0f@dread11.news.tele.dk:
>
> Mange store spørgsmål, lad os tage dem lidt af gangen.

Tak for svaret :) Jeg er ikke forduftet, har bare ikke fået kigget så
meget mere på det siden sidst.

> Glem alt om autotools (automake/autoconfig/...) indtil du skal
> lave projecter med MANGE filer (> 100) og som skal kunne køre på
> ALLE platfrorme.
>
> For små projecter kan du let "nøjes" med en hjemmelavet makefil,
> evt. en for hver system eller en med nogle få if's.

Ok, jeg har rodet lidt med Anjuta i Linux, og den producerer selv nogle
config-/makefiler etc., så jeg slipper for det, men allerede for små
projekter, virker de komplicerde. Og jeg går ud fra, at jeg under alle
omstændigheder skal benytte nogle andre, når jeg kompilerer i Windows.

> For en Linux lignende platform på Windows foretrækker jeg
> MinGW over Cygwin. Mingw er mere stabil og meget mindre,
> men cygwin's mere komplet i sin Linux emulering.
>
> Du kunne oveveje at bruge wxWidgets eller QT til at indkapsle
> Windows API'et, så får du oveni det samme API på Linux (og
> andre platforme). wxWidgets er vist den der ligner Windows mest
> men nogen synes at QT er bedre designet.
>
> http://www.wxwidgets.org/
> http://www.trolltech.com/
>

Det var faktisk også ldit wxWindows/Widgets jeg havde i tankerne, men
tak for tippet :)

Venlig hilsen
Christian Larsen

Bertel Brander (07-11-2004)
Kommentar
Fra : Bertel Brander


Dato : 07-11-04 23:13

Christian Larsen wrote:
>
> Ok, jeg har rodet lidt med Anjuta i Linux, og den producerer selv nogle
> config-/makefiler etc., så jeg slipper for det, men allerede for små
> projekter, virker de komplicerde. Og jeg går ud fra, at jeg under alle
> omstændigheder skal benytte nogle andre, når jeg kompilerer i Windows.
>
Det er ikke utænkeligt at du kan bruge de samme config/make - filer
med cygwin eller MSYS og MinGW, men jeg kender ikke Anjuta.


--
"I learned more from a three minute record
than I ever learned in school"
- Bruce Springsteen

Bo Lorentsen (29-11-2004)
Kommentar
Fra : Bo Lorentsen


Dato : 29-11-04 17:22

Christian Larsen wrote:

>
> Ok, jeg har rodet lidt med Anjuta i Linux, og den producerer selv nogle
> config-/makefiler etc., så jeg slipper for det, men allerede for små
> projekter, virker de komplicerde. Og jeg går ud fra, at jeg under alle
> omstændigheder skal benytte nogle andre, når jeg kompilerer i Windows.
Automake/autoconf filer er ikke for sarte sjæle, det er bare stort og
ret komplexet. Du skulle måske hellere kikke på cmake !

> Det var faktisk også ldit wxWindows/Widgets jeg havde i tankerne, men
> tak for tippet :)
wxWindows er i sig selv et "cross platform" projekt ?

/BL

Bo Lorentsen (29-11-2004)
Kommentar
Fra : Bo Lorentsen


Dato : 29-11-04 17:19

Christian Larsen wrote:
> Hej NG!
>
> Jeg overvejer/er ved at skifte platform fra Windows til fortrinsvis Linux,
> og jeg er blevet fascineret af muligheden for at skrive programmer, som
> kan compile og køre på begge platforme.
Jeg forstår dine overvejselser

> Nu har jeg således været ved
> at researche lidt, hvorvidt det er muligt at benytte samme opsætning af
> projektet på tværs af systemerne, så jeg slipper for at vedligeholde to
> opsætninger, og jeg er nået frem til, at jeg nok skal kigge nærmere på
> "GNU Autotools" og "Cygwin" eller "Mingw32", men da jeg ikke er nogen haj
> (læs: totalt grøn) med hensyn til makefiler osv. vil jeg høre jer, hvad
> I har af ideer og erfaringer. Det er ikke større projekter vi snakker om
> (kun som hobby foreløbigt).
Hmm, det er to meget forskellige ting, men så lang tid at du holder dig
til std libs er det jo meget "let" at flytte kode mellem de to
platforme. Hvis du vil bruge Windows kald i din kode er du jo alligevel
låst til EN platform, og derfor wil der ikke være behov for flere make
mulighedder.

Forskellen mellem "cygwin" og "mingw32" er at cygwin er en unix
simulator (incl. libs), og MingW32 er en gcc (ld + make) for Win32 til
ren Win32 kode (just add win32 header filer).

Vil du lave "cross platform" kode ?

Hvilke slags projekter har du drømt om at realicerer ?

> Mine spørgsmål går fx på, om det er muligt at skrive et bundt
> kildefiler, hvor nogle dele kun benyttes i på én platform, således at
> jeg fx kan skrive specialiserede klasser til hvert system.
Ja da, gnu make har skal en masse platform specifikke variable

> Det er mit
> indtryk, at Cygwin nærmest laver et Unix-lag oven på Windows, men jeg
Yeps, det er rigtigt !

> vil også gerne fx kunne tilgå Windows API'en, så der er mulighed for
> optimering til det system. Windows-udgaven skal således helst ikke kræve
> samme placering af filerne som Linux-udgaven, hvor den eksekverbare fx
> ligger i /usr/local/bin eller lignende.
Hmm, man installerer ikke ting i /usr/local/bin når man laver hygge
projekter. Er der ikke noget med et installations program du snakker om
her ?

Hvis du laver Win32 kald, kan de ikke kører under linux og der er ingen
ide i at kører den på begge platforme. Men du nævner platform specifikke
code filer med classer der abstraherer sig dette væk, og det er
muligt, og ofte gjort !

> Jeg har prøvet at søge på opskrifter på at opsætte sådan et projekt,
> men jeg synes det er svært at finde noget, der er overskueligt. De fleste
> kilder er meget tekniske, men jeg har måske mest brug for et ganske lille
> eksempel-projekt, som jeg kan tage udgangspunkt i. Håber I kan hjælpe
> mig i gang ;)
Man kan jo prøve, men jeg tror lige vi skal bruge kræfter på at finde ud
af hvad du precis ønsker at opnå.

/BL

Søg
Reklame
Statistik
Spørgsmål : 177579
Tips : 31968
Nyheder : 719565
Indlæg : 6409073
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste