Sebastian Kügler , FrOSCon 2006 … · 2020-02-10 · Sebastian Kügler , FrOSCon 2006 Alexander...
Transcript of Sebastian Kügler , FrOSCon 2006 … · 2020-02-10 · Sebastian Kügler , FrOSCon 2006 Alexander...
Sebastian Kügler <[email protected]>,
FrOSCon 2006
Alexander Dymo <[email protected]>, aKademy 2006
Accomplishments and Challenges of KDevelop Team
Sebastian Kügler <[email protected]>,
FrOSCon 2006
Alexander Dymo <[email protected]>, aKademy 2006
We understand your C++
since 2002
Sebastian Kügler <[email protected]>,
FrOSCon 2006
Alexander Dymo <[email protected]>, aKademy 2006
We understand your C++
Sebastian Kügler <[email protected]>,
FrOSCon 2006
Alexander Dymo <[email protected]>, aKademy 2006
We understand your C++
Sebastian Kügler <[email protected]>,
FrOSCon 2006
Alexander Dymo <[email protected]>, aKademy 2006
We understand your buildsystem
Auto Hell Tools?qmake?cmake?make?
whatever else?
Sebastian Kügler <[email protected]>,
FrOSCon 2006
Alexander Dymo <[email protected]>, aKademy 2006
We do support KDE4 development
How?
http://www.kdedevelopers.org/node/2286
Thanks to Andras Mantia
Sebastian Kügler <[email protected]>,
FrOSCon 2006
Alexander Dymo <[email protected]>, aKademy 2006
We do support KDE4 development
cmake -G KDevelop3
ok, ok
cmake -DCMAKE_INSTALL_PREFIX=path_to_kde4_install_dir -DCMAKE_BUILD_TYPE=debugfull path_to_source_dir
-DKDE4_BUILD_TESTS -G KDevelop3
Thanks to Alex Neundorffor CMake generator
Sebastian Kügler <[email protected]>,
FrOSCon 2006
Alexander Dymo <[email protected]>, aKademy 2006
We do support KDE4 development
Sebastian Kügler <[email protected]>,
FrOSCon 2006
Alexander Dymo <[email protected]>, aKademy 2006
We do support KDE4 development
Some environment vars to setQTDIR=<your qt dir>
KDEDIR=<your kde4 dir>KDE4_DIR=<your kde4 dir>
PATH=$QTDIR/bin:$KDEDIR/bin:$PATH
Sebastian Kügler <[email protected]>,
FrOSCon 2006
Alexander Dymo <[email protected]>, aKademy 2006
We do support KDE4 development
Some more environment vars to set
KDEHOME=path_to_local_KDE4 folder (/home/user/.kde4) KDETMP=path_to_KDE4 temp dir (/tmp/user-kde4)
KDEVARTMP=similar to the above in /var (/var/tmp/user-kde4)
Don't forget abouteval ̀ dbus-launch --auto-syntax̀
Sebastian Kügler <[email protected]>,
FrOSCon 2006
Alexander Dymo <[email protected]>, aKademy 2006
More cool stuff: Ruby Debugger
Sebastian Kügler <[email protected]>,
FrOSCon 2006
Alexander Dymo <[email protected]>, aKademy 2006
We still suck
not as easy
not as complete
not as slick
Sebastian Kügler <[email protected]>,
FrOSCon 2006
Alexander Dymo <[email protected]>, aKademy 2006
Rock on!
KDevelop4
Sebastian Kügler <[email protected]>,
FrOSCon 2006
Alexander Dymo <[email protected]>, aKademy 2006
KDevelop 4
Cleaner architecturePowerful platform
Speaking the languages nativelyNative CMake support
Teamwork
Sebastian Kügler <[email protected]>,
FrOSCon 2006
Alexander Dymo <[email protected]>, aKademy 2006
KDevelop 4: C++
Lexer Parser Binder
Token Stream AST Code Model
DU-Chain Builder
DU Chain
Syntax Checker Class TreeCode Completion
Smart Highlighting
Refactoring?
Sebastian Kügler <[email protected]>,
FrOSCon 2006
Alexander Dymo <[email protected]>, aKademy 2006
KDevelop: C++: Definition-Use
Sebastian Kügler <[email protected]>,
FrOSCon 2006
Alexander Dymo <[email protected]>, aKademy 2006
Speaking C#, Java, Ruby, etc.
Not so crazy to implement all these manuallyCrazy enough to use a tool
Sebastian Kügler <[email protected]>,
FrOSCon 2006
Alexander Dymo <[email protected]>, aKademy 2006
kdev-pg: not only the parser generator
-- test.g
%token ID ("identifier") ;;
identifier + identifier-> expression ;;
ID-> identifier ;;
#kdev-pg –output=test test.g
test_ast.htest_default_visitor.cpp test_default_visitor.h test_parser.cpptest_parser.htest_visitor.cpptest_visitor.h
Sebastian Kügler <[email protected]>,
FrOSCon 2006
Alexander Dymo <[email protected]>, aKademy 2006
kdev-pg: not only the parser generator
struct ast_node { enum ast_node_kind_enum { Kind_expression = 1000, Kind_identifier = 1001, AST_NODE_KIND_COUNT }; int kind; std::size_t start_token; std::size_t end_token; }; struct expression_ast: public ast_node { enum { KIND = Kind_expression }; }; struct identifier_ast: public ast_node { enum { KIND = Kind_identifier }; };
class visitor {public: virtual void visit_node(ast_node *node) {} virtual void visit_expression(expression_ast *) {} virtual void visit_identifier(identifier_ast *) {}};
Sebastian Kügler <[email protected]>,
FrOSCon 2006
Alexander Dymo <[email protected]>, aKademy 2006
CMake
Bringing it to the next levelHow to interoperate with CMake?
Sebastian Kügler <[email protected]>,
FrOSCon 2006
Alexander Dymo <[email protected]>, aKademy 2006
Teamwork Mode
Client/ServerFile Collaboration
ConversationPatch Management
Sebastian Kügler <[email protected]>,
FrOSCon 2006
Alexander Dymo <[email protected]>, aKademy 2006
The next step is WORLD DOMINATION
Sebastian Kügler <[email protected]>,
FrOSCon 2006
Alexander Dymo <[email protected]>, aKademy 2006
The next step is WORLD DOMINATION
Sebastian Kügler <[email protected]>,
FrOSCon 2006
Alexander Dymo <[email protected]>, aKademy 2006
The next step is WORLD DOMINATION
2005
-08
2005
-09
2005
-10
2005
-11
2005
-12
2006
-01
2006
-02
2006
-03
2006
-04
2006
-05
2006
-06
2006
-07
2006
-08
2006
-09
0
25
50
75
100
125
150
175
200
225
250
275KDevelop 3.4 and 4.0 commit rate
Sebastian Kügler <[email protected]>,
FrOSCon 2006
Alexander Dymo <[email protected]>, aKademy 2006
Join us NOW!
Thanks andany questions?