KDevelop4/TipsAndTricks/da: Difference between revisions
No edit summary |
No edit summary |
||
Line 163: | Line 163: | ||
'''Libtool''' giver også problemer, hvis du prøver at debugge programmer, som er blevet linket med '''libtool''': for eksempel er programmet, som du ser i <tt>src/bin/program</tt> ikke et udførbart program men et script, som håndterer bibliotekerne. | '''Libtool''' giver også problemer, hvis du prøver at debugge programmer, som er blevet linket med '''libtool''': for eksempel er programmet, som du ser i <tt>src/bin/program</tt> ikke et udførbart program men et script, som håndterer bibliotekerne. | ||
Problemet løses ved at åbne en konsol og køre {{Input|1=libtool --mode=execute '''''<dst_binary>'''''}}men endnu virker '''KDevelop 4''' ikke godt sammen med andre konsoller end standarden. Jeg har været kørt fast når jeg har brugt den rigtige udførbare fil (sædvanligvis fundet i <tt>src/bin/.libs/<exec></tt>), som måske bruger de forkerte biblioteker, så kør '''make install''' før hver kørsel. | Problemet løses ved at åbne en konsol og køre {{Input|1=libtool --mode=execute '''''<dst_binary>'''''}}men endnu virker '''KDevelop 4''' ikke godt sammen med andre konsoller end standarden. Jeg har været kørt fast når jeg har brugt den rigtige udførbare fil (sædvanligvis fundet i <tt>src/bin/.libs/<exec></tt>), som måske bruger de forkerte biblioteker, så kør '''make install''' før hver kørsel. | ||
=== Dokumentation for KDE-klasser === | === Dokumentation for KDE-klasser === |
Revision as of 11:16, 12 August 2012
Tips og tricks
Kodefuldførelse
Selvom du har automatisk kodefuldførelse er det ofte en god ide at starte det manuelt. Tast Ctrl + Mellemrum, så får du en detaljeret liste til kodefuldførelse. Navigér med piletasterne (Op og Ned) og hold Alt-tasten nedtrykket for at vise dokumentationen for det punkt, der har fokus. Tast Enter for at indsætte punktet.
Assistent til C++-typer
Antag at du har noget i retning af:
#include <vector> void myFunc(const std::vector<int>& v) { }
Nu ønsker du at iterere over indholdet, så istedet for at skrive iteratorens type skriver du blot:
it = vector.begin();
Vent nu et øjeblik indtil assistenten dukker op nederst i editoren. Tast Alt + 1 for at udføre assistenten, så ender du med:
std::vector< int >::iterator it = v.begin();
Rart, megen tid sparet. Og dette skulle virke med de fleste eller alle udtryk, når blot højresiden kan evalueres skulle du få en assistent, der tilføjer den rigtige type på venstre side.
Assistent til C++-signaturer
Eksempel kode:
class foo { int bar(); }; int foo::bar() { }
Prøv nu de følgende punkter; vent et kort øjeblik efter hver skridt og anvend den assistent, der dukker op nederst i editoren ved at taste Alt + 1:
- tilføj en parameter, fx.
int foo
enten til signaturen af definitionen eller erklæringen. - gør en signatur
const
- lav en parameters type om
- fjern en parameter
Igen, en meget praktisk og tidsbesparende!
Assistent til manglende erklæringer i C++
Eksempelkode:
class foo { int bar(); }; foo::bar() { }
Skriv nu dette i implementationen af bar:
myVar = 1;
Du skulle nu få en assistent, som giver dig tre valgmuligheder:
- erklær en lokal
int myVar
(se typeassistenten ovenfor) - erklær en public
int myVar
, som tilføjer erklæringen til klasses - erklær en private
int myVar
, som gør det samme som ovenstående, men i afsnittet private.
Dette virker også for funktioner:
class foo { }; int main() { foo f; }
Skriv nu dette under foo f;
:
f.someFunction(1, true, "asdf");
Assistenten tilbyder dig nu at erklære funktionen; du vil få følgende:
class foo { public: void someFunction( int arg1, bool arg2, const char* arg3 ); };
Hjælp til overloading
Eksempel kode:
class A { public: virtual A* foo(int something){} }; class B : public A { };
Inde i klassen B
taster du Ctrl + Mellemrum for at bringe kodefuldførelsen frem. Der skulle være et punkt til at overloade foo(int something);
. Udfør det ved at taste Enter, så skulle du få:
class B : public A { public: virtual A* foo(int something); };
Hjælp med implementering
Fortsæt hvor vi slap med Hjælp til overloadning':
class B : public A { public: virtual A* foo(int something); };
Placér markøren under klassekonteksten, fremkald kodefuldførelse med Ctrl + Mellemrum, så skulle du bemærke et punkt der implementerer B::foo(int something);
. Udfør den ved at taste Enter, så skulle du få:
A* B::foo(int something) { A::foo(something); }
Åbn hurtigt
er nok den funktion i KDevelop, som virkelig forøger produktiviteten:
- Åbn filer hurtigt
Tast Ctrl + At + O og skriv en del at filens sti og tast Enter, så åbnes den valgte fil. Søgningen adskilles med skråstreger, dvs. du kan skrive således: /a/.cpp
, så vil listen kun vise filstier med en mappe, som begynder med a
og filer, som er filendelsen .cpp
. Prøv det.
- Åbn klasser hurtigt
Ctrl + Alt + C og skriv (dele af) den kvalificerede klasseidentifikator, tast Retur og hop til klassens erklæring.
Sørg også for at udforske de andre avancerede funktioner i
.Omrids
På tilsvarende måde som åbn hurtigt kan du taste Ctrl + Alt + N for at få et overblik over det aktuelle dokument med mulighed for at søge efter et navn og hurtigt hoppe til dets erklæring.
Kontekstbrowsing
Lad markøren svæve over en anvendelse, erklæring eller definition for at få en boks med information om den til at dukke op. Du kan også flytte markøren ind i boksen og holde Alt-tasten nedtrykket for at få vist boksen uden at bruge musen. Brug piletasterne til at navigere imellem links i boksen og tast Enter for at følge linket.
Når du er inde i en anvendelse kan du taste Meta + Venstrepil eller Meta + højrepil for at hoppe til den næste eller forrige anvendelse. Tast Ctrl + . eller Ctrl + , for at hoppe til erklæringen eller definitionen af symbolet under markøren; eller du kan klikke på et symbol mens Ctrl-tasten holdes nede for at opnå det samme.
Beærk også menuen
og dens forskellige tastaturgenveje. Kontekstbrowsing er skærkt!Hvordan man bruger autotools: automake, autoconf og libtool
KDevelop 4 understøtter ikke autotools særligt godt. Jeg foreslår at du bruger Konsole til at køre konfigurationsscripts for at lave makefiler. Den tilpassede understøttelse af makefiler fungerer ret godt. Jeg foreslår at bruge en separat byggemappe (fx project/build).
Efter at have lavet de tilpassede makefiler (f.eks. i mappen build) kan man føje den til byggelisten ved at klikke på knappen nederste i visningen Projekter under Projektvalg. Det får kommandoen make til at blive kørt når du klikker på . Man kan også køre f.eks. make install direkte på en specifik mappe ved at højreklikke på mappen og vælge make install. Det er praktisk, hvis du har mange projekter i et arbejdssæt.
Libtool giver også problemer, hvis du prøver at debugge programmer, som er blevet linket med libtool: for eksempel er programmet, som du ser i src/bin/program ikke et udførbart program men et script, som håndterer bibliotekerne.
Problemet løses ved at åbne en konsol og køre
libtool --mode=execute <dst_binary>
men endnu virker KDevelop 4 ikke godt sammen med andre konsoller end standarden. Jeg har været kørt fast når jeg har brugt den rigtige udførbare fil (sædvanligvis fundet i src/bin/.libs/<exec>), som måske bruger de forkerte biblioteker, så kør make install før hver kørsel.
Dokumentation for KDE-klasser
Bruger du pluginet Qt-dokumentation, så kan du integrere KDE-dokumentationen med Qt-dokumentationen. Browse til KDE API Reference og download den ønskede .qch-til (ikke alle moduler tilbyder en sådan). Indstil så pluginet Qt-dokumentation ved at tilføje de downloadede filer. Det er det! Når du nu lader markøren svæve over en KDE-klasse, så kan du se linket , som linker til dokumentationen for KFooClass. God fornøjelse.