Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: [OPGELOST]Hoe compileer ik van het pakket "kdegames" enkel de game LSkat?  (gelezen 1272 keer)

Offline laudaka

  • Lid
Hoe kan ik van het pakket "kdegames" alleen het spel "lskat" compileren? Ik wil graag de spelregels van LSkat veranderen. Op zich lukt het om te compileren en ik heb in de broncode al een spelregel veranderd en het werkt :) Nu zijn de tienen niet meer hoger dan de heren maar hebben de waarde die je verwacht :D Heel grappig dat het zo makkelijk is om iets te veranderen, probeer dat maar eens bij een closed source spel :P

Maar het vervelende is dat als ik het bv. op mijn langzamere pc ook wil doen dat het dan wel errug langzaam is om nog tig andere spellen ook te compileren die allemaal in het pakket "kdegames" zitten. Hoe kan ik op de command line aangeven dat ik alleen "lskat" wil compileren/bouwen? En niet katomic, kbackgammon, kblackbox, kblocks, kbounce, kmahjongg, kmines, enz. enz. enz.

Eerst heb ik wat voorbereidingen gedaan en toen heb ik zo gecompileerd:
cmake .
make
sudo make install

"cmake ." komt dus in de plaats van het meer gebruikelijke "./configure". Ik weet bijna zeker dat ik iets vlak achter cmake moet zetten, zoiets als "cmake -Dblahblahblah=lskat ." is het denk ik. Is het inderdaad iets met de -D optie en wat dan?

Overigens wil ik ook nog drie modules van kdegames juist wel compileren die lskat nodig heeft.

Alvast bedankt voor wie me dit kan vertellen.
« Laatst bewerkt op: 2012/08/02, 13:45:56 door laudaka »

Re: Hoe compileer ik van het pakket "kdegames" enkel de game LSkat?
« Reactie #1 Gepost op: 2012/07/31, 13:36:41 »
Kun je niet gewoon enkel "lskat" uitchecken met svn/git?

Re: Hoe compileer ik van het pakket "kdegames" enkel de game LSkat?
« Reactie #2 Gepost op: 2012/07/31, 21:38:02 »
Zal het niet eenvoudiger zijn om het bestand "CMakeLists.txt" aan te passen, zodat je alleen LSkat en de nodige bibliotheken laat compileren.
MvG,
MauRice
Registered Linux user: 473556

Re: Hoe compileer ik van het pakket "kdegames" enkel de game LSkat?
« Reactie #3 Gepost op: 2012/08/01, 10:28:49 »
Zal het niet eenvoudiger zijn om het bestand "CMakeLists.txt" aan te passen, zodat je alleen LSkat en de nodige bibliotheken laat compileren.


Elke game binnen kdegames heeft een eigen cmakelists.txt Je kunt dus ofwel met de cmakelists in de hoofdmap heel het pakket bouwen ofwel cd'en naar een onderliggende map, jn dit geval lskat, om met die cmakelists 1 onderdeel te bouwen.

Offline laudaka

  • Lid
Re: Hoe compileer ik van het pakket "kdegames" enkel de game LSkat?
« Reactie #4 Gepost op: 2012/08/01, 16:34:39 »
Om de source code verkrijgen heb ik niet svn/git gebruikt maar ik heb het uit de Ubuntu repositories gehaald. Met:
cd /naar/dir/waar/ik/broncode/wil
apt-get source lskat
Dit geeft de mededeling ``Picking 'kdegames' as source package instead of 'lskat'´´ Dus als ik graag de source code wil van precies de versie die op mijn Ubuntu geïnstalleerd is (kan worden) dan krijg ik alle kdegames in één keer.

Verder is deze mededeling interessant ``Please use:
bzr get https://code.launchpad.net/~kubuntu-packagers/kdegames/ubuntu
to retrieve the latest (possibly unreleased) updates to the package.´´ Niet wat ik nu wil maar handig om te weten.

Verder heb ik om alles te hebben voor het compileren van kdegames nog dit vooraf gedaan:
sudo apt build-dep lskat
En de rest van het recept is:cd kdegames-4.6.5
cmake .
make
sudo make install

Maar dat kon dus veel slimmer.
Elke game binnen kdegames heeft een eigen cmakelists.txt Je kunt dus ofwel met de cmakelists in de hoofdmap heel het pakket bouwen ofwel cd'en naar een onderliggende map, jn dit geval lskat, om met die cmakelists 1 onderdeel te bouwen.
En dat is de oplossing! Dank je wel Vistaus. En dank je wel Cumulus en Maurice voor het meedenken ;)

Het recept wordt toch een beetje listig. Ik merk dat cmake draaien in kdegames-4.6.5/lskat niet werkt. Het configureren met cmake moet toch wel gebeuren in kdegames-4.6.5 . En dan pas een cd naar lskat, en daar dan de make voor het compileren van alleen lskat. Dus het laatste deel van het recept is dan:cd kdegames-4.6.5
cmake .
cd lskat
make
sudo make install
Werkt :)

Re: Hoe compileer ik van het pakket "kdegames" enkel de game LSkat?
« Reactie #5 Gepost op: 2012/08/02, 00:13:27 »
Oké, dat werkt met de source code uit de repo's kennelijk ietsje anders dan ;)
Maar ben blij dat het nu gelukt is, graag gedaan! :)

Offline laudaka

  • Lid

[VRAAG IS OPGELOST] titel aangepast


Ja het verbaast mij ook dat het zo moet. Het zou ook aan cmake kunnen liggen. Volgens mij gebruiken ze voor de stap van het configureren altijd het cmake commando bij het KDE project, nooit een meegeleverd "configure" shell script. De volgende stap is nu om de AI die tegen mij speelt wat dommer te programmeren zodat ik vaker win van de computer ^-^ =D

Terzijde:
Het blijft trouwens maf dat voor heel veel programma's de stap voor het configureren gebeurt met een doodgewoon shell script, het meegeleverde "configure" script dus. Je kan in plaats van./configureook typenbash configureDat werkt prima en onderstaande is hetzelfde als "./configure" typen:dash configure
"./configure" betekent natuurlijk niets anders dan het script "configure" uitvoeren wat in de huidige directory staat (niet de "configure" van andere broncode dus!). Het duurde een tijdje voordat ik dat doorhad :D dat het gewoon een Bourne/POSIX shell script was.

O ik ben weer lekker aan het afdwalen en kletsen vandaag zie ik   =D
« Laatst bewerkt op: 2012/08/02, 13:58:28 door laudaka »

Dat configure script wordt gegenereerd door een set van programma's die "autotools" heten (bevat o.a. autoconf en automake). Autotools is echter... niet echt aangenaam... om mee te werken en niet echt portable buiten Unixsystemen. Daarom schakelen nieuwere projecten meestal over op CMake, wat eenvoudiger is en ook goed werkt op Windows.

CMake zou een make-target moeten maken voor iedere binary in een project dus "cmake .; make lskat" zou ook moeten werken.
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Offline laudaka

  • Lid
Ja dat wist ik inderdaad, dat programmeurs dat configure script niet helemaal met de hand schrijven. Dat zou wel erg veel werk zijn. LOL Zelf heb ik die autotools nooit gebruikt, maar ik weet dat zo'n configure script door die autotools gemaakt wordt. En ik was al programmeurs tegengekomen die het "autohell" noemden in plaats van "autotools" :)

Wat ik niet wist is dat CMake juist gemaakt is om de problemen op te lossen waar programmeurs last van hebben bij de autotools. Bedankt voor de info :) Ik zal ongetwijfeld nooit zelf ontwikkelaar zijn bij een programmeerproject maar als je voor jezelf wel een project wil compileren/builden is het wel fijn om iets meer te weten waar ontwikkelaars mee bezig zijn.
« Laatst bewerkt op: 2012/08/02, 14:26:01 door laudaka »

Offline laudaka

  • Lid
Seysayux: Toch nog een vraagje. Als ik in de kdegames directory sta werkt "make lskat" inderdaad zoals ik wil. Maar hoe installeer ik het dan? Want met "sudo make install" gaat hij toch weer alle andere dingen compileren die hij mist. Wordt het "sudo make install lskat"? Hmm, maar dat kan niet kloppen. Als ik het goed heb is "install" een target van make, en bij dit project is "lskat" dan ook een target. Hoe moet dit dan? Hoe geef ik aan dat ik een installatie wil van het target "lskat"? Op zich werkt het natuurlijk prima door naar de lskat-directory te wisselen. Maar ik zou het wel erg fijn vinden om eindelijk iets meer te begrijpen van het make commando.

Als je trouwens een stoomcursus in het gebruik van make weet ergens op het web dan hoor ik het graag. Zeg 10 à 30 bladzijdes leeswerk. Geen honderden bladzijdes :D Dan hou ik op met hier domme vragen stellen :P

Van de man page werd ik niet wijzer, daar staat niets in over targets als "install" "clean" etc.

Alvast hartelijk bedankt als je me nog wat meer kan vertellen :)

Re: [OPGELOST]Hoe compileer ik van het pakket "kdegames" enkel de game LSkat?
« Reactie #10 Gepost op: 2012/08/02, 18:44:28 »
Make is eigenlijk een soort van scriptinterpreter, het script dat wordt uitgevoerd heet altijd 'Makefile' in de huidige map. Targets zijn een soort van functies die je kan aanroepen. Standaard wordt het target 'all' gemaakt, verder is er niet echt een vereiste qua targetnamen maar meer conventie. De code van de targets zelf zijn eigenlijk shell script. Het is iets ingewikkelder dan dit, maar goed, eerlijk gezegd weet ik er zelf ook niet meer van aangezien ik bijna nooit een Makefile zelf moet schrijven.

CMake is een "preprocessor" voor Makefiles, d.w.z. het geeft een makefile als uitvoer. CMake levert nu toevallig standaard een install, clean, ... target. Ook levert CMake een "help" target, waar alle beschikbare targets in staan. CMake kan ook andere buildfiles genereren, zoals MSVC-projecten, XCode-projecten, ...

Korte inleiding tot Make: http://mrbook.org/tutorials/make/
Korte inleiding tot CMake: http://cmake.org/cmake/help/cmake_tutorial.html
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Offline laudaka

  • Lid
Re: [OPGELOST]Hoe compileer ik van het pakket "kdegames" enkel de game LSkat?
« Reactie #11 Gepost op: 2012/08/07, 18:06:57 »
Dank je wel Sey Sayux. Jij weet in ieder geval net iets meer dan mij. Zoals jij het uitlegt wordt het opeens allemaal een stukje duidelijker.

Ik heb net vluchtig gekeken naar die tutorial over make (over de Makefile) en over CMake en dat ziet er goed leesbaar uit. Dat ga ik binnenkort eens doorlopen. Echt handig om iets meer van te begrijpen.
« Laatst bewerkt op: 2012/08/07, 18:19:44 door laudaka »