<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://techbase.kde.org/skins/common/feed.css?0.2"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://techbase.kde.org/api.php?action=feedcontributions&amp;user=Neundorf&amp;feedformat=atom</id>
		<title>KDE TechBase - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://techbase.kde.org/api.php?action=feedcontributions&amp;user=Neundorf&amp;feedformat=atom"/>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Special:Contributions/Neundorf"/>
		<updated>2013-05-25T13:15:27Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.20.2</generator>

	<entry>
		<id>http://techbase.kde.org/Development/ECM_SourceIncompatChanges</id>
		<title>Development/ECM SourceIncompatChanges</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/ECM_SourceIncompatChanges"/>
				<updated>2013-02-16T17:37:21Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: /* FindKDE4Internal.cmake */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== FindFlex.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake now, which is named FindFLEX.cmake (different casing !).&lt;br /&gt;
Beside that there should be no changes in behaviour.&lt;br /&gt;
&lt;br /&gt;
* find_package(Flex) -&amp;gt; find_package(FLEX)&lt;br /&gt;
&lt;br /&gt;
=== FindGettext.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake now.&lt;br /&gt;
The syntax of GETTEXT_PROCESS_PO_FILES() changed a bit, it now needs the additional keyword &amp;quot;PO_FILES.&lt;br /&gt;
&lt;br /&gt;
* gettext_process_po_files(de ALL INSTALL_DESTINATION ${dest} file1.po file2.po) -&amp;gt; gettext_process_po_files(de ALL INSTALL_DESTINATION ${dest} PO_FILES file1.po file2.po)&lt;br /&gt;
&lt;br /&gt;
=== FindGIF.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake now.&lt;br /&gt;
There is a minor difference, which will not affect many systems. The KDE version accepted only giflib version 4, while the CMake version accepted any version of giflib. If giflib version 4 .x is required, the version can now be specified:&lt;br /&gt;
&lt;br /&gt;
* find_package(GIF) -&amp;gt; find_package(GIF 4 )&lt;br /&gt;
&lt;br /&gt;
This actually only was an issue on some relatively old Sun machines in 2006. Maybe today it is not even there a problem anymore.&lt;br /&gt;
&lt;br /&gt;
=== FindLibXslt.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake 2.8.7 now.&lt;br /&gt;
There are two changes compared to the one in kdelibs:&lt;br /&gt;
&lt;br /&gt;
* ${LIBEXSLT_LIBRARIES} -&amp;gt; ${LIBXSLT_EXSLT_LIBRARIES}&lt;br /&gt;
* WinCE is probably not supported anymore, patches are welcome&lt;br /&gt;
&lt;br /&gt;
=== FindMsgfmt.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore, use GETTEXT_MSGFMT_EXECUTABLE from [[#FindGettext.cmake]] coming with CMake instead.&lt;br /&gt;
&lt;br /&gt;
=== FindPostgreSQL.cmake ===&lt;br /&gt;
&lt;br /&gt;
The variable names have changed:&lt;br /&gt;
* POSTGRESQL_INCLUDE_DIR -&amp;gt; PostgreSQL_INCLUDE_DIRS&lt;br /&gt;
* POSTGRESQL_LIBRARIES -&amp;gt; PostgreSQL_LIBRARIES&lt;br /&gt;
&lt;br /&gt;
=== FindRUBY.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore, use FindRuby.cmake coming with CMake instead. Most variables are the same. Below are the changes:&lt;br /&gt;
&lt;br /&gt;
* find_package(RUBY) -&amp;gt; find_package(Ruby)&lt;br /&gt;
* RUBY_INCLUDE_PATH -&amp;gt; RUBY_INCLUDE_DIRS&lt;br /&gt;
&lt;br /&gt;
=== FindX11.cmake ===&lt;br /&gt;
&lt;br /&gt;
The following two variables have been removed, use the newer ones instead:&lt;br /&gt;
&lt;br /&gt;
* X11_Xss_FOUND -&amp;gt; X11_Xscreensaver_FOUND&lt;br /&gt;
* X11_Xss_LIB -&amp;gt; X11_Xscreensaver_LIB&lt;br /&gt;
&lt;br /&gt;
The following libraries are now not part of X11_LIBRARIES anymore, so they may have to be added to target_link_libraries() explicitely where needed:&lt;br /&gt;
&lt;br /&gt;
* X11_Xau_LIB&lt;br /&gt;
* X11_Xft_LIB&lt;br /&gt;
* X11_Xdmcp_LIB&lt;br /&gt;
* X11_Xpm_LIB&lt;br /&gt;
&lt;br /&gt;
=== MacroAddCompileFlags.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(.. APPEND_STRING) instead (new in CMake 2.8.6).&lt;br /&gt;
&lt;br /&gt;
* include(MacroAddCompileFlags) -&amp;gt; delete&lt;br /&gt;
* macro_add_compile_flags(target &amp;quot;-O2 -g&amp;quot;) -&amp;gt; set_property(TARGET target APPEND_STRING PROPERTY COMPILE_FLAGS &amp;quot; -O2 -g&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== MacroAddLinkFlags.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(.. APPEND_STRING) instead (new in CMake 2.8.6).&lt;br /&gt;
&lt;br /&gt;
* include(MacroAddLinkFlags) -&amp;gt; delete&lt;br /&gt;
* macro_add_link_flags(target &amp;quot;-no-rpath&amp;quot;) -&amp;gt; set_property(TARGET target APPEND_STRING PROPERTY LINK_FLAGS &amp;quot; -no-rpath&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== MacroAdditionalCleanFiles.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(... APPEND ...) instead.&lt;br /&gt;
&lt;br /&gt;
* include(MacroAdditionalCleanFiles) -&amp;gt; delete&lt;br /&gt;
* macro_additional_clean_files(file1 file2 fileN) -&amp;gt; set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES &amp;quot;file1;file2;fileN&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
=== MacroEnsureVersion.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed, use VERSION_LESS or VERSION_GREATER instead.&lt;br /&gt;
Example:&lt;br /&gt;
  if ( ${MY_VERSION} VERSION_LESS ${REQUIRED_VERSION} )&lt;br /&gt;
    # error, version is too old&lt;br /&gt;
  endif()&lt;br /&gt;
&lt;br /&gt;
=== MacroLogFeature.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed, instead FeatureSummary.cmake from CMake &amp;gt;= 2.8.6 has to be used, which has even more functionality.&lt;br /&gt;
Please have a look at the documentation of FeatureSummary.cmake on the cmake manpage.&lt;br /&gt;
&lt;br /&gt;
* macro_log_feature(&amp;lt;variable&amp;gt; &amp;lt;FEATURE&amp;gt; &amp;lt;DESCRIPTION&amp;gt; &amp;lt;URL&amp;gt; &amp;lt;REQUIRED&amp;gt; &amp;lt;MIN_VERSION&amp;gt; &amp;lt;COMMENTS&amp;gt;) -&amp;gt; set_package_properties(FEATURE PROPERTIES DESCRIPTION &amp;lt;DESCRIPTION&amp;gt; URL &amp;lt;URL&amp;gt; TYPE (RUNTIME|OPTIONAL|RECOMMENDED|REQUIRED) PURPOSE &amp;quot;good for something&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* macro_display_feature_log() -&amp;gt; feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGE)&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalAddSubdirectory.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file is now part of the extra-cmake-modules package and thus has been renamed to ECMOptionalAddSubdirectory.cmake&lt;br /&gt;
&lt;br /&gt;
* include(MacroOptionalAddSubdirectory) -&amp;gt; include (ECMOptionalAddSubdirectory)&lt;br /&gt;
* macro_optional_add_subdirectory(...) -&amp;gt; ecm_optional_add_subdirectory(...)&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalDependPackage.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed, the purpose was broken.&lt;br /&gt;
&lt;br /&gt;
* include (MacroOptionalDependPackage) -&amp;gt; delete&lt;br /&gt;
* macro_optional_depend_package() -&amp;gt; delete&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalFindPackage.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore. Instead, starting with CMake 2.8.6, every find_package() call which is not REQUIRED can be disabled by setting the variable CMAKE_DISABLE_FIND_PACKAGE_&amp;lt;PackageName&amp;gt; to TRUE. This makes this macro unnecessary.&lt;br /&gt;
&lt;br /&gt;
* include(MacroFindPackage) -&amp;gt; delete&lt;br /&gt;
* macro_optional_find_package(Foo ...) -&amp;gt; find_package(Foo ... )&lt;br /&gt;
&lt;br /&gt;
=== MacroPushRequiredVars.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been merged into CMake, but has been renamed to CMakePushCheckState.cmake.&lt;br /&gt;
&lt;br /&gt;
* include(MacroPushRequiredVars) -&amp;gt; include(CMakePushCheckState)&lt;br /&gt;
* macro_push_required_vars() -&amp;gt; cmake_push_check_state()&lt;br /&gt;
* macro_pop_required_vars() -&amp;gt; cmake_pop_check_state()&lt;br /&gt;
&lt;br /&gt;
=== MacroWriteBasicCMakeVersionFile.cmake ===&lt;br /&gt;
&lt;br /&gt;
This macro has been merged into CMake, but has been renamed to WriteBasicConfigVersionFile.cmake, also the syntax changed slightly. To get exactly the same behaviour as with the old macro, do as shown below. For details see the documentation in the man page.&lt;br /&gt;
&lt;br /&gt;
* include(MacroWriteBasicCMakeVersionFile) -&amp;gt; include (WriteBasicConfigVersionFile)&lt;br /&gt;
* macro_write_basic_cmake_version_file(&amp;lt;outfilename&amp;gt; 1 2 3) -&amp;gt; write_basic_config_version_file(&amp;lt;outfilename&amp;gt; VERSION 1.2.3 COMPATIBILITY AnyNewerVersion )&lt;br /&gt;
&lt;br /&gt;
=== GenerateExportHeader.cmake ===&lt;br /&gt;
&lt;br /&gt;
This has been added to CMake and provides the generate_export_header macro. This macro is the replacement of kde4_create_exports_header.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== FindKDE4Internal.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore.&lt;br /&gt;
Removed variables:&lt;br /&gt;
* MIME_INSTALL_DIR&lt;br /&gt;
* INFO_INSTALL_DIR&lt;br /&gt;
* KDE4_MIME_INSTALL_DIR&lt;br /&gt;
* KDE4_INFO_INSTALL_DIR&lt;br /&gt;
* LIB_SUFFIX : if the automatic detection does not work as it should, set LIB_INSTALL_DIR&lt;br /&gt;
* KDE4_CXX_FPIE_FLAGS, KDE4_PIE_LDFLAGS: not needed anymore, works automatically since CMake 2.8.11 via automatic handling of the POSITION_INDEPENDENT_CODE target property&lt;br /&gt;
&lt;br /&gt;
=== KDE4Defaults.cmake ===&lt;br /&gt;
&lt;br /&gt;
* test related settings have been removed. Get them now via find_package(KF5 COMPONENTS CMake)&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/ECM_SourceIncompatChanges</id>
		<title>Development/ECM SourceIncompatChanges</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/ECM_SourceIncompatChanges"/>
				<updated>2013-02-15T21:00:32Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: /* FindKDE4Internal.cmake */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== FindFlex.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake now, which is named FindFLEX.cmake (different casing !).&lt;br /&gt;
Beside that there should be no changes in behaviour.&lt;br /&gt;
&lt;br /&gt;
* find_package(Flex) -&amp;gt; find_package(FLEX)&lt;br /&gt;
&lt;br /&gt;
=== FindGettext.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake now.&lt;br /&gt;
The syntax of GETTEXT_PROCESS_PO_FILES() changed a bit, it now needs the additional keyword &amp;quot;PO_FILES.&lt;br /&gt;
&lt;br /&gt;
* gettext_process_po_files(de ALL INSTALL_DESTINATION ${dest} file1.po file2.po) -&amp;gt; gettext_process_po_files(de ALL INSTALL_DESTINATION ${dest} PO_FILES file1.po file2.po)&lt;br /&gt;
&lt;br /&gt;
=== FindGIF.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake now.&lt;br /&gt;
There is a minor difference, which will not affect many systems. The KDE version accepted only giflib version 4, while the CMake version accepted any version of giflib. If giflib version 4 .x is required, the version can now be specified:&lt;br /&gt;
&lt;br /&gt;
* find_package(GIF) -&amp;gt; find_package(GIF 4 )&lt;br /&gt;
&lt;br /&gt;
This actually only was an issue on some relatively old Sun machines in 2006. Maybe today it is not even there a problem anymore.&lt;br /&gt;
&lt;br /&gt;
=== FindLibXslt.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake 2.8.7 now.&lt;br /&gt;
There are two changes compared to the one in kdelibs:&lt;br /&gt;
&lt;br /&gt;
* ${LIBEXSLT_LIBRARIES} -&amp;gt; ${LIBXSLT_EXSLT_LIBRARIES}&lt;br /&gt;
* WinCE is probably not supported anymore, patches are welcome&lt;br /&gt;
&lt;br /&gt;
=== FindMsgfmt.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore, use GETTEXT_MSGFMT_EXECUTABLE from [[#FindGettext.cmake]] coming with CMake instead.&lt;br /&gt;
&lt;br /&gt;
=== FindPostgreSQL.cmake ===&lt;br /&gt;
&lt;br /&gt;
The variable names have changed:&lt;br /&gt;
* POSTGRESQL_INCLUDE_DIR -&amp;gt; PostgreSQL_INCLUDE_DIRS&lt;br /&gt;
* POSTGRESQL_LIBRARIES -&amp;gt; PostgreSQL_LIBRARIES&lt;br /&gt;
&lt;br /&gt;
=== FindRUBY.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore, use FindRuby.cmake coming with CMake instead. Most variables are the same. Below are the changes:&lt;br /&gt;
&lt;br /&gt;
* find_package(RUBY) -&amp;gt; find_package(Ruby)&lt;br /&gt;
* RUBY_INCLUDE_PATH -&amp;gt; RUBY_INCLUDE_DIRS&lt;br /&gt;
&lt;br /&gt;
=== FindX11.cmake ===&lt;br /&gt;
&lt;br /&gt;
The following two variables have been removed, use the newer ones instead:&lt;br /&gt;
&lt;br /&gt;
* X11_Xss_FOUND -&amp;gt; X11_Xscreensaver_FOUND&lt;br /&gt;
* X11_Xss_LIB -&amp;gt; X11_Xscreensaver_LIB&lt;br /&gt;
&lt;br /&gt;
The following libraries are now not part of X11_LIBRARIES anymore, so they may have to be added to target_link_libraries() explicitely where needed:&lt;br /&gt;
&lt;br /&gt;
* X11_Xau_LIB&lt;br /&gt;
* X11_Xft_LIB&lt;br /&gt;
* X11_Xdmcp_LIB&lt;br /&gt;
* X11_Xpm_LIB&lt;br /&gt;
&lt;br /&gt;
=== MacroAddCompileFlags.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(.. APPEND_STRING) instead (new in CMake 2.8.6).&lt;br /&gt;
&lt;br /&gt;
* include(MacroAddCompileFlags) -&amp;gt; delete&lt;br /&gt;
* macro_add_compile_flags(target &amp;quot;-O2 -g&amp;quot;) -&amp;gt; set_property(TARGET target APPEND_STRING PROPERTY COMPILE_FLAGS &amp;quot; -O2 -g&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== MacroAddLinkFlags.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(.. APPEND_STRING) instead (new in CMake 2.8.6).&lt;br /&gt;
&lt;br /&gt;
* include(MacroAddLinkFlags) -&amp;gt; delete&lt;br /&gt;
* macro_add_link_flags(target &amp;quot;-no-rpath&amp;quot;) -&amp;gt; set_property(TARGET target APPEND_STRING PROPERTY LINK_FLAGS &amp;quot; -no-rpath&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== MacroAdditionalCleanFiles.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(... APPEND ...) instead.&lt;br /&gt;
&lt;br /&gt;
* include(MacroAdditionalCleanFiles) -&amp;gt; delete&lt;br /&gt;
* macro_additional_clean_files(file1 file2 fileN) -&amp;gt; set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES &amp;quot;file1;file2;fileN&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
=== MacroEnsureVersion.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed, use VERSION_LESS or VERSION_GREATER instead.&lt;br /&gt;
Example:&lt;br /&gt;
  if ( ${MY_VERSION} VERSION_LESS ${REQUIRED_VERSION} )&lt;br /&gt;
    # error, version is too old&lt;br /&gt;
  endif()&lt;br /&gt;
&lt;br /&gt;
=== MacroLogFeature.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed, instead FeatureSummary.cmake from CMake &amp;gt;= 2.8.6 has to be used, which has even more functionality.&lt;br /&gt;
Please have a look at the documentation of FeatureSummary.cmake on the cmake manpage.&lt;br /&gt;
&lt;br /&gt;
* macro_log_feature(&amp;lt;variable&amp;gt; &amp;lt;FEATURE&amp;gt; &amp;lt;DESCRIPTION&amp;gt; &amp;lt;URL&amp;gt; &amp;lt;REQUIRED&amp;gt; &amp;lt;MIN_VERSION&amp;gt; &amp;lt;COMMENTS&amp;gt;) -&amp;gt; set_package_properties(FEATURE PROPERTIES DESCRIPTION &amp;lt;DESCRIPTION&amp;gt; URL &amp;lt;URL&amp;gt; TYPE (RUNTIME|OPTIONAL|RECOMMENDED|REQUIRED) PURPOSE &amp;quot;good for something&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* macro_display_feature_log() -&amp;gt; feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGE)&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalAddSubdirectory.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file is now part of the extra-cmake-modules package and thus has been renamed to ECMOptionalAddSubdirectory.cmake&lt;br /&gt;
&lt;br /&gt;
* include(MacroOptionalAddSubdirectory) -&amp;gt; include (ECMOptionalAddSubdirectory)&lt;br /&gt;
* macro_optional_add_subdirectory(...) -&amp;gt; ecm_optional_add_subdirectory(...)&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalDependPackage.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed, the purpose was broken.&lt;br /&gt;
&lt;br /&gt;
* include (MacroOptionalDependPackage) -&amp;gt; delete&lt;br /&gt;
* macro_optional_depend_package() -&amp;gt; delete&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalFindPackage.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore. Instead, starting with CMake 2.8.6, every find_package() call which is not REQUIRED can be disabled by setting the variable CMAKE_DISABLE_FIND_PACKAGE_&amp;lt;PackageName&amp;gt; to TRUE. This makes this macro unnecessary.&lt;br /&gt;
&lt;br /&gt;
* include(MacroFindPackage) -&amp;gt; delete&lt;br /&gt;
* macro_optional_find_package(Foo ...) -&amp;gt; find_package(Foo ... )&lt;br /&gt;
&lt;br /&gt;
=== MacroPushRequiredVars.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been merged into CMake, but has been renamed to CMakePushCheckState.cmake.&lt;br /&gt;
&lt;br /&gt;
* include(MacroPushRequiredVars) -&amp;gt; include(CMakePushCheckState)&lt;br /&gt;
* macro_push_required_vars() -&amp;gt; cmake_push_check_state()&lt;br /&gt;
* macro_pop_required_vars() -&amp;gt; cmake_pop_check_state()&lt;br /&gt;
&lt;br /&gt;
=== MacroWriteBasicCMakeVersionFile.cmake ===&lt;br /&gt;
&lt;br /&gt;
This macro has been merged into CMake, but has been renamed to WriteBasicConfigVersionFile.cmake, also the syntax changed slightly. To get exactly the same behaviour as with the old macro, do as shown below. For details see the documentation in the man page.&lt;br /&gt;
&lt;br /&gt;
* include(MacroWriteBasicCMakeVersionFile) -&amp;gt; include (WriteBasicConfigVersionFile)&lt;br /&gt;
* macro_write_basic_cmake_version_file(&amp;lt;outfilename&amp;gt; 1 2 3) -&amp;gt; write_basic_config_version_file(&amp;lt;outfilename&amp;gt; VERSION 1.2.3 COMPATIBILITY AnyNewerVersion )&lt;br /&gt;
&lt;br /&gt;
=== GenerateExportHeader.cmake ===&lt;br /&gt;
&lt;br /&gt;
This has been added to CMake and provides the generate_export_header macro. This macro is the replacement of kde4_create_exports_header.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== FindKDE4Internal.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore.&lt;br /&gt;
Removed variables:&lt;br /&gt;
* MIME_INSTALL_DIR&lt;br /&gt;
* INFO_INSTALL_DIR&lt;br /&gt;
* KDE4_MIME_INSTALL_DIR&lt;br /&gt;
* KDE4_INFO_INSTALL_DIR&lt;br /&gt;
* LIB_SUFFIX : if the automatic detection does not work as it should, set LIB_INSTALL_DIR&lt;br /&gt;
&lt;br /&gt;
=== KDE4Defaults.cmake ===&lt;br /&gt;
&lt;br /&gt;
* test related settings have been removed. Get them now via find_package(KF5 COMPONENTS CMake)&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/ECM_SourceIncompatChanges</id>
		<title>Development/ECM SourceIncompatChanges</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/ECM_SourceIncompatChanges"/>
				<updated>2013-02-15T20:51:57Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: /* FindKDE4Internal.cmake */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== FindFlex.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake now, which is named FindFLEX.cmake (different casing !).&lt;br /&gt;
Beside that there should be no changes in behaviour.&lt;br /&gt;
&lt;br /&gt;
* find_package(Flex) -&amp;gt; find_package(FLEX)&lt;br /&gt;
&lt;br /&gt;
=== FindGettext.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake now.&lt;br /&gt;
The syntax of GETTEXT_PROCESS_PO_FILES() changed a bit, it now needs the additional keyword &amp;quot;PO_FILES.&lt;br /&gt;
&lt;br /&gt;
* gettext_process_po_files(de ALL INSTALL_DESTINATION ${dest} file1.po file2.po) -&amp;gt; gettext_process_po_files(de ALL INSTALL_DESTINATION ${dest} PO_FILES file1.po file2.po)&lt;br /&gt;
&lt;br /&gt;
=== FindGIF.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake now.&lt;br /&gt;
There is a minor difference, which will not affect many systems. The KDE version accepted only giflib version 4, while the CMake version accepted any version of giflib. If giflib version 4 .x is required, the version can now be specified:&lt;br /&gt;
&lt;br /&gt;
* find_package(GIF) -&amp;gt; find_package(GIF 4 )&lt;br /&gt;
&lt;br /&gt;
This actually only was an issue on some relatively old Sun machines in 2006. Maybe today it is not even there a problem anymore.&lt;br /&gt;
&lt;br /&gt;
=== FindLibXslt.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake 2.8.7 now.&lt;br /&gt;
There are two changes compared to the one in kdelibs:&lt;br /&gt;
&lt;br /&gt;
* ${LIBEXSLT_LIBRARIES} -&amp;gt; ${LIBXSLT_EXSLT_LIBRARIES}&lt;br /&gt;
* WinCE is probably not supported anymore, patches are welcome&lt;br /&gt;
&lt;br /&gt;
=== FindMsgfmt.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore, use GETTEXT_MSGFMT_EXECUTABLE from [[#FindGettext.cmake]] coming with CMake instead.&lt;br /&gt;
&lt;br /&gt;
=== FindPostgreSQL.cmake ===&lt;br /&gt;
&lt;br /&gt;
The variable names have changed:&lt;br /&gt;
* POSTGRESQL_INCLUDE_DIR -&amp;gt; PostgreSQL_INCLUDE_DIRS&lt;br /&gt;
* POSTGRESQL_LIBRARIES -&amp;gt; PostgreSQL_LIBRARIES&lt;br /&gt;
&lt;br /&gt;
=== FindRUBY.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore, use FindRuby.cmake coming with CMake instead. Most variables are the same. Below are the changes:&lt;br /&gt;
&lt;br /&gt;
* find_package(RUBY) -&amp;gt; find_package(Ruby)&lt;br /&gt;
* RUBY_INCLUDE_PATH -&amp;gt; RUBY_INCLUDE_DIRS&lt;br /&gt;
&lt;br /&gt;
=== FindX11.cmake ===&lt;br /&gt;
&lt;br /&gt;
The following two variables have been removed, use the newer ones instead:&lt;br /&gt;
&lt;br /&gt;
* X11_Xss_FOUND -&amp;gt; X11_Xscreensaver_FOUND&lt;br /&gt;
* X11_Xss_LIB -&amp;gt; X11_Xscreensaver_LIB&lt;br /&gt;
&lt;br /&gt;
The following libraries are now not part of X11_LIBRARIES anymore, so they may have to be added to target_link_libraries() explicitely where needed:&lt;br /&gt;
&lt;br /&gt;
* X11_Xau_LIB&lt;br /&gt;
* X11_Xft_LIB&lt;br /&gt;
* X11_Xdmcp_LIB&lt;br /&gt;
* X11_Xpm_LIB&lt;br /&gt;
&lt;br /&gt;
=== MacroAddCompileFlags.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(.. APPEND_STRING) instead (new in CMake 2.8.6).&lt;br /&gt;
&lt;br /&gt;
* include(MacroAddCompileFlags) -&amp;gt; delete&lt;br /&gt;
* macro_add_compile_flags(target &amp;quot;-O2 -g&amp;quot;) -&amp;gt; set_property(TARGET target APPEND_STRING PROPERTY COMPILE_FLAGS &amp;quot; -O2 -g&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== MacroAddLinkFlags.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(.. APPEND_STRING) instead (new in CMake 2.8.6).&lt;br /&gt;
&lt;br /&gt;
* include(MacroAddLinkFlags) -&amp;gt; delete&lt;br /&gt;
* macro_add_link_flags(target &amp;quot;-no-rpath&amp;quot;) -&amp;gt; set_property(TARGET target APPEND_STRING PROPERTY LINK_FLAGS &amp;quot; -no-rpath&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== MacroAdditionalCleanFiles.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(... APPEND ...) instead.&lt;br /&gt;
&lt;br /&gt;
* include(MacroAdditionalCleanFiles) -&amp;gt; delete&lt;br /&gt;
* macro_additional_clean_files(file1 file2 fileN) -&amp;gt; set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES &amp;quot;file1;file2;fileN&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
=== MacroEnsureVersion.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed, use VERSION_LESS or VERSION_GREATER instead.&lt;br /&gt;
Example:&lt;br /&gt;
  if ( ${MY_VERSION} VERSION_LESS ${REQUIRED_VERSION} )&lt;br /&gt;
    # error, version is too old&lt;br /&gt;
  endif()&lt;br /&gt;
&lt;br /&gt;
=== MacroLogFeature.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed, instead FeatureSummary.cmake from CMake &amp;gt;= 2.8.6 has to be used, which has even more functionality.&lt;br /&gt;
Please have a look at the documentation of FeatureSummary.cmake on the cmake manpage.&lt;br /&gt;
&lt;br /&gt;
* macro_log_feature(&amp;lt;variable&amp;gt; &amp;lt;FEATURE&amp;gt; &amp;lt;DESCRIPTION&amp;gt; &amp;lt;URL&amp;gt; &amp;lt;REQUIRED&amp;gt; &amp;lt;MIN_VERSION&amp;gt; &amp;lt;COMMENTS&amp;gt;) -&amp;gt; set_package_properties(FEATURE PROPERTIES DESCRIPTION &amp;lt;DESCRIPTION&amp;gt; URL &amp;lt;URL&amp;gt; TYPE (RUNTIME|OPTIONAL|RECOMMENDED|REQUIRED) PURPOSE &amp;quot;good for something&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* macro_display_feature_log() -&amp;gt; feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGE)&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalAddSubdirectory.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file is now part of the extra-cmake-modules package and thus has been renamed to ECMOptionalAddSubdirectory.cmake&lt;br /&gt;
&lt;br /&gt;
* include(MacroOptionalAddSubdirectory) -&amp;gt; include (ECMOptionalAddSubdirectory)&lt;br /&gt;
* macro_optional_add_subdirectory(...) -&amp;gt; ecm_optional_add_subdirectory(...)&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalDependPackage.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed, the purpose was broken.&lt;br /&gt;
&lt;br /&gt;
* include (MacroOptionalDependPackage) -&amp;gt; delete&lt;br /&gt;
* macro_optional_depend_package() -&amp;gt; delete&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalFindPackage.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore. Instead, starting with CMake 2.8.6, every find_package() call which is not REQUIRED can be disabled by setting the variable CMAKE_DISABLE_FIND_PACKAGE_&amp;lt;PackageName&amp;gt; to TRUE. This makes this macro unnecessary.&lt;br /&gt;
&lt;br /&gt;
* include(MacroFindPackage) -&amp;gt; delete&lt;br /&gt;
* macro_optional_find_package(Foo ...) -&amp;gt; find_package(Foo ... )&lt;br /&gt;
&lt;br /&gt;
=== MacroPushRequiredVars.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been merged into CMake, but has been renamed to CMakePushCheckState.cmake.&lt;br /&gt;
&lt;br /&gt;
* include(MacroPushRequiredVars) -&amp;gt; include(CMakePushCheckState)&lt;br /&gt;
* macro_push_required_vars() -&amp;gt; cmake_push_check_state()&lt;br /&gt;
* macro_pop_required_vars() -&amp;gt; cmake_pop_check_state()&lt;br /&gt;
&lt;br /&gt;
=== MacroWriteBasicCMakeVersionFile.cmake ===&lt;br /&gt;
&lt;br /&gt;
This macro has been merged into CMake, but has been renamed to WriteBasicConfigVersionFile.cmake, also the syntax changed slightly. To get exactly the same behaviour as with the old macro, do as shown below. For details see the documentation in the man page.&lt;br /&gt;
&lt;br /&gt;
* include(MacroWriteBasicCMakeVersionFile) -&amp;gt; include (WriteBasicConfigVersionFile)&lt;br /&gt;
* macro_write_basic_cmake_version_file(&amp;lt;outfilename&amp;gt; 1 2 3) -&amp;gt; write_basic_config_version_file(&amp;lt;outfilename&amp;gt; VERSION 1.2.3 COMPATIBILITY AnyNewerVersion )&lt;br /&gt;
&lt;br /&gt;
=== GenerateExportHeader.cmake ===&lt;br /&gt;
&lt;br /&gt;
This has been added to CMake and provides the generate_export_header macro. This macro is the replacement of kde4_create_exports_header.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== FindKDE4Internal.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore.&lt;br /&gt;
Removed variables:&lt;br /&gt;
* MIME_INSTALL_DIR&lt;br /&gt;
* INFO_INSTALL_DIR&lt;br /&gt;
* KDE4_MIME_INSTALL_DIR&lt;br /&gt;
* KDE4_INFO_INSTALL_DIR&lt;br /&gt;
* LIB_SUFFIX : if the automatic detection does not work as it should, set LIB_INSTALL_DIR&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/ECM_SourceIncompatChanges</id>
		<title>Development/ECM SourceIncompatChanges</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/ECM_SourceIncompatChanges"/>
				<updated>2013-02-15T20:48:13Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== FindFlex.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake now, which is named FindFLEX.cmake (different casing !).&lt;br /&gt;
Beside that there should be no changes in behaviour.&lt;br /&gt;
&lt;br /&gt;
* find_package(Flex) -&amp;gt; find_package(FLEX)&lt;br /&gt;
&lt;br /&gt;
=== FindGettext.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake now.&lt;br /&gt;
The syntax of GETTEXT_PROCESS_PO_FILES() changed a bit, it now needs the additional keyword &amp;quot;PO_FILES.&lt;br /&gt;
&lt;br /&gt;
* gettext_process_po_files(de ALL INSTALL_DESTINATION ${dest} file1.po file2.po) -&amp;gt; gettext_process_po_files(de ALL INSTALL_DESTINATION ${dest} PO_FILES file1.po file2.po)&lt;br /&gt;
&lt;br /&gt;
=== FindGIF.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake now.&lt;br /&gt;
There is a minor difference, which will not affect many systems. The KDE version accepted only giflib version 4, while the CMake version accepted any version of giflib. If giflib version 4 .x is required, the version can now be specified:&lt;br /&gt;
&lt;br /&gt;
* find_package(GIF) -&amp;gt; find_package(GIF 4 )&lt;br /&gt;
&lt;br /&gt;
This actually only was an issue on some relatively old Sun machines in 2006. Maybe today it is not even there a problem anymore.&lt;br /&gt;
&lt;br /&gt;
=== FindLibXslt.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake 2.8.7 now.&lt;br /&gt;
There are two changes compared to the one in kdelibs:&lt;br /&gt;
&lt;br /&gt;
* ${LIBEXSLT_LIBRARIES} -&amp;gt; ${LIBXSLT_EXSLT_LIBRARIES}&lt;br /&gt;
* WinCE is probably not supported anymore, patches are welcome&lt;br /&gt;
&lt;br /&gt;
=== FindMsgfmt.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore, use GETTEXT_MSGFMT_EXECUTABLE from [[#FindGettext.cmake]] coming with CMake instead.&lt;br /&gt;
&lt;br /&gt;
=== FindPostgreSQL.cmake ===&lt;br /&gt;
&lt;br /&gt;
The variable names have changed:&lt;br /&gt;
* POSTGRESQL_INCLUDE_DIR -&amp;gt; PostgreSQL_INCLUDE_DIRS&lt;br /&gt;
* POSTGRESQL_LIBRARIES -&amp;gt; PostgreSQL_LIBRARIES&lt;br /&gt;
&lt;br /&gt;
=== FindRUBY.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore, use FindRuby.cmake coming with CMake instead. Most variables are the same. Below are the changes:&lt;br /&gt;
&lt;br /&gt;
* find_package(RUBY) -&amp;gt; find_package(Ruby)&lt;br /&gt;
* RUBY_INCLUDE_PATH -&amp;gt; RUBY_INCLUDE_DIRS&lt;br /&gt;
&lt;br /&gt;
=== FindX11.cmake ===&lt;br /&gt;
&lt;br /&gt;
The following two variables have been removed, use the newer ones instead:&lt;br /&gt;
&lt;br /&gt;
* X11_Xss_FOUND -&amp;gt; X11_Xscreensaver_FOUND&lt;br /&gt;
* X11_Xss_LIB -&amp;gt; X11_Xscreensaver_LIB&lt;br /&gt;
&lt;br /&gt;
The following libraries are now not part of X11_LIBRARIES anymore, so they may have to be added to target_link_libraries() explicitely where needed:&lt;br /&gt;
&lt;br /&gt;
* X11_Xau_LIB&lt;br /&gt;
* X11_Xft_LIB&lt;br /&gt;
* X11_Xdmcp_LIB&lt;br /&gt;
* X11_Xpm_LIB&lt;br /&gt;
&lt;br /&gt;
=== MacroAddCompileFlags.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(.. APPEND_STRING) instead (new in CMake 2.8.6).&lt;br /&gt;
&lt;br /&gt;
* include(MacroAddCompileFlags) -&amp;gt; delete&lt;br /&gt;
* macro_add_compile_flags(target &amp;quot;-O2 -g&amp;quot;) -&amp;gt; set_property(TARGET target APPEND_STRING PROPERTY COMPILE_FLAGS &amp;quot; -O2 -g&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== MacroAddLinkFlags.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(.. APPEND_STRING) instead (new in CMake 2.8.6).&lt;br /&gt;
&lt;br /&gt;
* include(MacroAddLinkFlags) -&amp;gt; delete&lt;br /&gt;
* macro_add_link_flags(target &amp;quot;-no-rpath&amp;quot;) -&amp;gt; set_property(TARGET target APPEND_STRING PROPERTY LINK_FLAGS &amp;quot; -no-rpath&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== MacroAdditionalCleanFiles.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(... APPEND ...) instead.&lt;br /&gt;
&lt;br /&gt;
* include(MacroAdditionalCleanFiles) -&amp;gt; delete&lt;br /&gt;
* macro_additional_clean_files(file1 file2 fileN) -&amp;gt; set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES &amp;quot;file1;file2;fileN&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
=== MacroEnsureVersion.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed, use VERSION_LESS or VERSION_GREATER instead.&lt;br /&gt;
Example:&lt;br /&gt;
  if ( ${MY_VERSION} VERSION_LESS ${REQUIRED_VERSION} )&lt;br /&gt;
    # error, version is too old&lt;br /&gt;
  endif()&lt;br /&gt;
&lt;br /&gt;
=== MacroLogFeature.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed, instead FeatureSummary.cmake from CMake &amp;gt;= 2.8.6 has to be used, which has even more functionality.&lt;br /&gt;
Please have a look at the documentation of FeatureSummary.cmake on the cmake manpage.&lt;br /&gt;
&lt;br /&gt;
* macro_log_feature(&amp;lt;variable&amp;gt; &amp;lt;FEATURE&amp;gt; &amp;lt;DESCRIPTION&amp;gt; &amp;lt;URL&amp;gt; &amp;lt;REQUIRED&amp;gt; &amp;lt;MIN_VERSION&amp;gt; &amp;lt;COMMENTS&amp;gt;) -&amp;gt; set_package_properties(FEATURE PROPERTIES DESCRIPTION &amp;lt;DESCRIPTION&amp;gt; URL &amp;lt;URL&amp;gt; TYPE (RUNTIME|OPTIONAL|RECOMMENDED|REQUIRED) PURPOSE &amp;quot;good for something&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* macro_display_feature_log() -&amp;gt; feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGE)&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalAddSubdirectory.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file is now part of the extra-cmake-modules package and thus has been renamed to ECMOptionalAddSubdirectory.cmake&lt;br /&gt;
&lt;br /&gt;
* include(MacroOptionalAddSubdirectory) -&amp;gt; include (ECMOptionalAddSubdirectory)&lt;br /&gt;
* macro_optional_add_subdirectory(...) -&amp;gt; ecm_optional_add_subdirectory(...)&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalDependPackage.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed, the purpose was broken.&lt;br /&gt;
&lt;br /&gt;
* include (MacroOptionalDependPackage) -&amp;gt; delete&lt;br /&gt;
* macro_optional_depend_package() -&amp;gt; delete&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalFindPackage.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore. Instead, starting with CMake 2.8.6, every find_package() call which is not REQUIRED can be disabled by setting the variable CMAKE_DISABLE_FIND_PACKAGE_&amp;lt;PackageName&amp;gt; to TRUE. This makes this macro unnecessary.&lt;br /&gt;
&lt;br /&gt;
* include(MacroFindPackage) -&amp;gt; delete&lt;br /&gt;
* macro_optional_find_package(Foo ...) -&amp;gt; find_package(Foo ... )&lt;br /&gt;
&lt;br /&gt;
=== MacroPushRequiredVars.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been merged into CMake, but has been renamed to CMakePushCheckState.cmake.&lt;br /&gt;
&lt;br /&gt;
* include(MacroPushRequiredVars) -&amp;gt; include(CMakePushCheckState)&lt;br /&gt;
* macro_push_required_vars() -&amp;gt; cmake_push_check_state()&lt;br /&gt;
* macro_pop_required_vars() -&amp;gt; cmake_pop_check_state()&lt;br /&gt;
&lt;br /&gt;
=== MacroWriteBasicCMakeVersionFile.cmake ===&lt;br /&gt;
&lt;br /&gt;
This macro has been merged into CMake, but has been renamed to WriteBasicConfigVersionFile.cmake, also the syntax changed slightly. To get exactly the same behaviour as with the old macro, do as shown below. For details see the documentation in the man page.&lt;br /&gt;
&lt;br /&gt;
* include(MacroWriteBasicCMakeVersionFile) -&amp;gt; include (WriteBasicConfigVersionFile)&lt;br /&gt;
* macro_write_basic_cmake_version_file(&amp;lt;outfilename&amp;gt; 1 2 3) -&amp;gt; write_basic_config_version_file(&amp;lt;outfilename&amp;gt; VERSION 1.2.3 COMPATIBILITY AnyNewerVersion )&lt;br /&gt;
&lt;br /&gt;
=== GenerateExportHeader.cmake ===&lt;br /&gt;
&lt;br /&gt;
This has been added to CMake and provides the generate_export_header macro. This macro is the replacement of kde4_create_exports_header.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== FindKDE4Internal.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore.&lt;br /&gt;
Removed variables:&lt;br /&gt;
* MIME_INSTALL_DIR&lt;br /&gt;
* INFO_INSTALL_DIR&lt;br /&gt;
* KDE4_MIME_INSTALL_DIR&lt;br /&gt;
* KDE4_INFO_INSTALL_DIR&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/ECM_SourceIncompatChanges</id>
		<title>Development/ECM SourceIncompatChanges</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/ECM_SourceIncompatChanges"/>
				<updated>2012-10-27T14:57:13Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: /* FindPostgreSQL.cmake */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== FindFlex.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake now, which is named FindFLEX.cmake (different casing !).&lt;br /&gt;
Beside that there should be no changes in behaviour.&lt;br /&gt;
&lt;br /&gt;
* find_package(Flex) -&amp;gt; find_package(FLEX)&lt;br /&gt;
&lt;br /&gt;
=== FindGettext.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake now.&lt;br /&gt;
The syntax of GETTEXT_PROCESS_PO_FILES() changed a bit, it now needs the additional keyword &amp;quot;PO_FILES.&lt;br /&gt;
&lt;br /&gt;
* gettext_process_po_files(de ALL INSTALL_DESTINATION ${dest} file1.po file2.po) -&amp;gt; gettext_process_po_files(de ALL INSTALL_DESTINATION ${dest} PO_FILES file1.po file2.po)&lt;br /&gt;
&lt;br /&gt;
=== FindGIF.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake now.&lt;br /&gt;
There is a minor difference, which will not affect many systems. The KDE version accepted only giflib version 4, while the CMake version accepted any version of giflib. If giflib version 4 .x is required, the version can now be specified:&lt;br /&gt;
&lt;br /&gt;
* find_package(GIF) -&amp;gt; find_package(GIF 4 )&lt;br /&gt;
&lt;br /&gt;
This actually only was an issue on some relatively old Sun machines in 2006. Maybe today it is not even there a problem anymore.&lt;br /&gt;
&lt;br /&gt;
=== FindLibXslt.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake 2.8.7 now.&lt;br /&gt;
There are two changes compared to the one in kdelibs:&lt;br /&gt;
&lt;br /&gt;
* ${LIBEXSLT_LIBRARIES} -&amp;gt; ${LIBXSLT_EXSLT_LIBRARIES}&lt;br /&gt;
* WinCE is probably not supported anymore, patches are welcome&lt;br /&gt;
&lt;br /&gt;
=== FindMsgfmt.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore, use GETTEXT_MSGFMT_EXECUTABLE from [[#FindGettext.cmake]] coming with CMake instead.&lt;br /&gt;
&lt;br /&gt;
=== FindPostgreSQL.cmake ===&lt;br /&gt;
&lt;br /&gt;
The variable names have changed:&lt;br /&gt;
* POSTGRESQL_INCLUDE_DIR -&amp;gt; PostgreSQL_INCLUDE_DIRS&lt;br /&gt;
* POSTGRESQL_LIBRARIES -&amp;gt; PostgreSQL_LIBRARIES&lt;br /&gt;
&lt;br /&gt;
=== FindRUBY.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore, use FindRuby.cmake coming with CMake instead. Most variables are the same. Below are the changes:&lt;br /&gt;
&lt;br /&gt;
* find_package(RUBY) -&amp;gt; find_package(Ruby)&lt;br /&gt;
* RUBY_INCLUDE_PATH -&amp;gt; RUBY_INCLUDE_DIRS&lt;br /&gt;
&lt;br /&gt;
=== FindX11.cmake ===&lt;br /&gt;
&lt;br /&gt;
The following two variables have been removed, use the newer ones instead:&lt;br /&gt;
&lt;br /&gt;
* X11_Xss_FOUND -&amp;gt; X11_Xscreensaver_FOUND&lt;br /&gt;
* X11_Xss_LIB -&amp;gt; X11_Xscreensaver_LIB&lt;br /&gt;
&lt;br /&gt;
The following libraries are now not part of X11_LIBRARIES anymore, so they may have to be added to target_link_libraries() explicitely where needed:&lt;br /&gt;
&lt;br /&gt;
* X11_Xau_LIB&lt;br /&gt;
* X11_Xft_LIB&lt;br /&gt;
* X11_Xdmcp_LIB&lt;br /&gt;
* X11_Xpm_LIB&lt;br /&gt;
&lt;br /&gt;
=== MacroAddCompileFlags.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(.. APPEND_STRING) instead (new in CMake 2.8.6).&lt;br /&gt;
&lt;br /&gt;
* include(MacroAddCompileFlags) -&amp;gt; delete&lt;br /&gt;
* macro_add_compile_flags(target &amp;quot;-O2 -g&amp;quot;) -&amp;gt; set_property(TARGET target APPEND_STRING PROPERTY COMPILE_FLAGS &amp;quot; -O2 -g&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== MacroAddLinkFlags.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(.. APPEND_STRING) instead (new in CMake 2.8.6).&lt;br /&gt;
&lt;br /&gt;
* include(MacroAddLinkFlags) -&amp;gt; delete&lt;br /&gt;
* macro_add_link_flags(target &amp;quot;-no-rpath&amp;quot;) -&amp;gt; set_property(TARGET target APPEND_STRING PROPERTY LINK_FLAGS &amp;quot; -no-rpath&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== MacroAdditionalCleanFiles.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(... APPEND ...) instead.&lt;br /&gt;
&lt;br /&gt;
* include(MacroAdditionalCleanFiles) -&amp;gt; delete&lt;br /&gt;
* macro_additional_clean_files(file1 file2 fileN) -&amp;gt; set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES &amp;quot;file1;file2;fileN&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
=== MacroEnsureVersion.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed, use VERSION_LESS or VERSION_GREATER instead.&lt;br /&gt;
Example:&lt;br /&gt;
  if ( ${MY_VERSION} VERSION_LESS ${REQUIRED_VERSION} )&lt;br /&gt;
    # error, version is too old&lt;br /&gt;
  endif()&lt;br /&gt;
&lt;br /&gt;
=== MacroLogFeature.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed, instead FeatureSummary.cmake from CMake &amp;gt;= 2.8.6 has to be used, which has even more functionality.&lt;br /&gt;
Please have a look at the documentation of FeatureSummary.cmake on the cmake manpage.&lt;br /&gt;
&lt;br /&gt;
* macro_log_feature(&amp;lt;variable&amp;gt; &amp;lt;FEATURE&amp;gt; &amp;lt;DESCRIPTION&amp;gt; &amp;lt;URL&amp;gt; &amp;lt;REQUIRED&amp;gt; &amp;lt;MIN_VERSION&amp;gt; &amp;lt;COMMENTS&amp;gt;) -&amp;gt; set_package_properties(FEATURE PROPERTIES DESCRIPTION &amp;lt;DESCRIPTION&amp;gt; URL &amp;lt;URL&amp;gt; TYPE (RUNTIME|OPTIONAL|RECOMMENDED|REQUIRED) PURPOSE &amp;quot;good for something&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* macro_display_feature_log() -&amp;gt; feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGE)&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalAddSubdirectory.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file is now part of the extra-cmake-modules package and thus has been renamed to ECMOptionalAddSubdirectory.cmake&lt;br /&gt;
&lt;br /&gt;
* include(MacroOptionalAddSubdirectory) -&amp;gt; include (ECMOptionalAddSubdirectory)&lt;br /&gt;
* macro_optional_add_subdirectory(...) -&amp;gt; ecm_optional_add_subdirectory(...)&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalDependPackage.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed, the purpose was broken.&lt;br /&gt;
&lt;br /&gt;
* include (MacroOptionalDependPackage) -&amp;gt; delete&lt;br /&gt;
* macro_optional_depend_package() -&amp;gt; delete&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalFindPackage.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore. Instead, starting with CMake 2.8.6, every find_package() call which is not REQUIRED can be disabled by setting the variable CMAKE_DISABLE_FIND_PACKAGE_&amp;lt;PackageName&amp;gt; to TRUE. This makes this macro unnecessary.&lt;br /&gt;
&lt;br /&gt;
* include(MacroFindPackage) -&amp;gt; delete&lt;br /&gt;
* macro_optional_find_package(Foo ...) -&amp;gt; find_package(Foo ... )&lt;br /&gt;
&lt;br /&gt;
=== MacroPushRequiredVars.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been merged into CMake, but has been renamed to CMakePushCheckState.cmake.&lt;br /&gt;
&lt;br /&gt;
* include(MacroPushRequiredVars) -&amp;gt; include(CMakePushCheckState)&lt;br /&gt;
* macro_push_required_vars() -&amp;gt; cmake_push_check_state()&lt;br /&gt;
* macro_pop_required_vars() -&amp;gt; cmake_pop_check_state()&lt;br /&gt;
&lt;br /&gt;
=== MacroWriteBasicCMakeVersionFile.cmake ===&lt;br /&gt;
&lt;br /&gt;
This macro has been merged into CMake, but has been renamed to WriteBasicConfigVersionFile.cmake, also the syntax changed slightly. To get exactly the same behaviour as with the old macro, do as shown below. For details see the documentation in the man page.&lt;br /&gt;
&lt;br /&gt;
* include(MacroWriteBasicCMakeVersionFile) -&amp;gt; include (WriteBasicConfigVersionFile)&lt;br /&gt;
* macro_write_basic_cmake_version_file(&amp;lt;outfilename&amp;gt; 1 2 3) -&amp;gt; write_basic_config_version_file(&amp;lt;outfilename&amp;gt; VERSION 1.2.3 COMPATIBILITY AnyNewerVersion )&lt;br /&gt;
&lt;br /&gt;
=== GenerateExportHeader.cmake ===&lt;br /&gt;
&lt;br /&gt;
This has been added to CMake and provides the generate_export_header macro. This macro is the replacement of kde4_create_exports_header.&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/ECM_SourceIncompatChanges</id>
		<title>Development/ECM SourceIncompatChanges</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/ECM_SourceIncompatChanges"/>
				<updated>2012-10-27T14:55:40Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: /* FindMsgfmt.cmake */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== FindFlex.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake now, which is named FindFLEX.cmake (different casing !).&lt;br /&gt;
Beside that there should be no changes in behaviour.&lt;br /&gt;
&lt;br /&gt;
* find_package(Flex) -&amp;gt; find_package(FLEX)&lt;br /&gt;
&lt;br /&gt;
=== FindGettext.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake now.&lt;br /&gt;
The syntax of GETTEXT_PROCESS_PO_FILES() changed a bit, it now needs the additional keyword &amp;quot;PO_FILES.&lt;br /&gt;
&lt;br /&gt;
* gettext_process_po_files(de ALL INSTALL_DESTINATION ${dest} file1.po file2.po) -&amp;gt; gettext_process_po_files(de ALL INSTALL_DESTINATION ${dest} PO_FILES file1.po file2.po)&lt;br /&gt;
&lt;br /&gt;
=== FindGIF.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake now.&lt;br /&gt;
There is a minor difference, which will not affect many systems. The KDE version accepted only giflib version 4, while the CMake version accepted any version of giflib. If giflib version 4 .x is required, the version can now be specified:&lt;br /&gt;
&lt;br /&gt;
* find_package(GIF) -&amp;gt; find_package(GIF 4 )&lt;br /&gt;
&lt;br /&gt;
This actually only was an issue on some relatively old Sun machines in 2006. Maybe today it is not even there a problem anymore.&lt;br /&gt;
&lt;br /&gt;
=== FindLibXslt.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake 2.8.7 now.&lt;br /&gt;
There are two changes compared to the one in kdelibs:&lt;br /&gt;
&lt;br /&gt;
* ${LIBEXSLT_LIBRARIES} -&amp;gt; ${LIBXSLT_EXSLT_LIBRARIES}&lt;br /&gt;
* WinCE is probably not supported anymore, patches are welcome&lt;br /&gt;
&lt;br /&gt;
=== FindMsgfmt.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore, use GETTEXT_MSGFMT_EXECUTABLE from [[#FindGettext.cmake]] coming with CMake instead.&lt;br /&gt;
&lt;br /&gt;
=== FindPostgreSQL.cmake ===&lt;br /&gt;
&lt;br /&gt;
The variable names have changed:&lt;br /&gt;
&lt;br /&gt;
=== FindRUBY.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore, use FindRuby.cmake coming with CMake instead. Most variables are the same. Below are the changes:&lt;br /&gt;
&lt;br /&gt;
* find_package(RUBY) -&amp;gt; find_package(Ruby)&lt;br /&gt;
* RUBY_INCLUDE_PATH -&amp;gt; RUBY_INCLUDE_DIRS&lt;br /&gt;
&lt;br /&gt;
=== FindX11.cmake ===&lt;br /&gt;
&lt;br /&gt;
The following two variables have been removed, use the newer ones instead:&lt;br /&gt;
&lt;br /&gt;
* X11_Xss_FOUND -&amp;gt; X11_Xscreensaver_FOUND&lt;br /&gt;
* X11_Xss_LIB -&amp;gt; X11_Xscreensaver_LIB&lt;br /&gt;
&lt;br /&gt;
The following libraries are now not part of X11_LIBRARIES anymore, so they may have to be added to target_link_libraries() explicitely where needed:&lt;br /&gt;
&lt;br /&gt;
* X11_Xau_LIB&lt;br /&gt;
* X11_Xft_LIB&lt;br /&gt;
* X11_Xdmcp_LIB&lt;br /&gt;
* X11_Xpm_LIB&lt;br /&gt;
&lt;br /&gt;
=== MacroAddCompileFlags.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(.. APPEND_STRING) instead (new in CMake 2.8.6).&lt;br /&gt;
&lt;br /&gt;
* include(MacroAddCompileFlags) -&amp;gt; delete&lt;br /&gt;
* macro_add_compile_flags(target &amp;quot;-O2 -g&amp;quot;) -&amp;gt; set_property(TARGET target APPEND_STRING PROPERTY COMPILE_FLAGS &amp;quot; -O2 -g&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== MacroAddLinkFlags.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(.. APPEND_STRING) instead (new in CMake 2.8.6).&lt;br /&gt;
&lt;br /&gt;
* include(MacroAddLinkFlags) -&amp;gt; delete&lt;br /&gt;
* macro_add_link_flags(target &amp;quot;-no-rpath&amp;quot;) -&amp;gt; set_property(TARGET target APPEND_STRING PROPERTY LINK_FLAGS &amp;quot; -no-rpath&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== MacroAdditionalCleanFiles.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(... APPEND ...) instead.&lt;br /&gt;
&lt;br /&gt;
* include(MacroAdditionalCleanFiles) -&amp;gt; delete&lt;br /&gt;
* macro_additional_clean_files(file1 file2 fileN) -&amp;gt; set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES &amp;quot;file1;file2;fileN&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
=== MacroEnsureVersion.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed, use VERSION_LESS or VERSION_GREATER instead.&lt;br /&gt;
Example:&lt;br /&gt;
  if ( ${MY_VERSION} VERSION_LESS ${REQUIRED_VERSION} )&lt;br /&gt;
    # error, version is too old&lt;br /&gt;
  endif()&lt;br /&gt;
&lt;br /&gt;
=== MacroLogFeature.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed, instead FeatureSummary.cmake from CMake &amp;gt;= 2.8.6 has to be used, which has even more functionality.&lt;br /&gt;
Please have a look at the documentation of FeatureSummary.cmake on the cmake manpage.&lt;br /&gt;
&lt;br /&gt;
* macro_log_feature(&amp;lt;variable&amp;gt; &amp;lt;FEATURE&amp;gt; &amp;lt;DESCRIPTION&amp;gt; &amp;lt;URL&amp;gt; &amp;lt;REQUIRED&amp;gt; &amp;lt;MIN_VERSION&amp;gt; &amp;lt;COMMENTS&amp;gt;) -&amp;gt; set_package_properties(FEATURE PROPERTIES DESCRIPTION &amp;lt;DESCRIPTION&amp;gt; URL &amp;lt;URL&amp;gt; TYPE (RUNTIME|OPTIONAL|RECOMMENDED|REQUIRED) PURPOSE &amp;quot;good for something&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* macro_display_feature_log() -&amp;gt; feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGE)&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalAddSubdirectory.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file is now part of the extra-cmake-modules package and thus has been renamed to ECMOptionalAddSubdirectory.cmake&lt;br /&gt;
&lt;br /&gt;
* include(MacroOptionalAddSubdirectory) -&amp;gt; include (ECMOptionalAddSubdirectory)&lt;br /&gt;
* macro_optional_add_subdirectory(...) -&amp;gt; ecm_optional_add_subdirectory(...)&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalDependPackage.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed, the purpose was broken.&lt;br /&gt;
&lt;br /&gt;
* include (MacroOptionalDependPackage) -&amp;gt; delete&lt;br /&gt;
* macro_optional_depend_package() -&amp;gt; delete&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalFindPackage.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore. Instead, starting with CMake 2.8.6, every find_package() call which is not REQUIRED can be disabled by setting the variable CMAKE_DISABLE_FIND_PACKAGE_&amp;lt;PackageName&amp;gt; to TRUE. This makes this macro unnecessary.&lt;br /&gt;
&lt;br /&gt;
* include(MacroFindPackage) -&amp;gt; delete&lt;br /&gt;
* macro_optional_find_package(Foo ...) -&amp;gt; find_package(Foo ... )&lt;br /&gt;
&lt;br /&gt;
=== MacroPushRequiredVars.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been merged into CMake, but has been renamed to CMakePushCheckState.cmake.&lt;br /&gt;
&lt;br /&gt;
* include(MacroPushRequiredVars) -&amp;gt; include(CMakePushCheckState)&lt;br /&gt;
* macro_push_required_vars() -&amp;gt; cmake_push_check_state()&lt;br /&gt;
* macro_pop_required_vars() -&amp;gt; cmake_pop_check_state()&lt;br /&gt;
&lt;br /&gt;
=== MacroWriteBasicCMakeVersionFile.cmake ===&lt;br /&gt;
&lt;br /&gt;
This macro has been merged into CMake, but has been renamed to WriteBasicConfigVersionFile.cmake, also the syntax changed slightly. To get exactly the same behaviour as with the old macro, do as shown below. For details see the documentation in the man page.&lt;br /&gt;
&lt;br /&gt;
* include(MacroWriteBasicCMakeVersionFile) -&amp;gt; include (WriteBasicConfigVersionFile)&lt;br /&gt;
* macro_write_basic_cmake_version_file(&amp;lt;outfilename&amp;gt; 1 2 3) -&amp;gt; write_basic_config_version_file(&amp;lt;outfilename&amp;gt; VERSION 1.2.3 COMPATIBILITY AnyNewerVersion )&lt;br /&gt;
&lt;br /&gt;
=== GenerateExportHeader.cmake ===&lt;br /&gt;
&lt;br /&gt;
This has been added to CMake and provides the generate_export_header macro. This macro is the replacement of kde4_create_exports_header.&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Policies/CMake_Coding_Style</id>
		<title>Policies/CMake Coding Style</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Policies/CMake_Coding_Style"/>
				<updated>2012-01-15T13:46:58Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document describes the recommended coding style for CMake files in KDE, i.e. CMakeLists.txt files and *.cmake files.&lt;br /&gt;
&lt;br /&gt;
=General=&lt;br /&gt;
&lt;br /&gt;
To put in in one sentence: be as careful when writing the CMake files as when you are writing C++ code.&lt;br /&gt;
&lt;br /&gt;
==Indentation==&lt;br /&gt;
&lt;br /&gt;
Indent all code correctly, i.e. the body of &lt;br /&gt;
&lt;br /&gt;
* if/else/endif&lt;br /&gt;
* foreach/endforeach&lt;br /&gt;
* while/endwhile&lt;br /&gt;
* macro/endmacro&lt;br /&gt;
* function/endfunction&lt;br /&gt;
&lt;br /&gt;
Use spaces for indenting, 2, 3 or 4 spaces preferably. Use the same amount&lt;br /&gt;
of spaces for indenting as is used in the rest of the file. Do not use tabs.&lt;br /&gt;
&lt;br /&gt;
==Upper/lower casing==&lt;br /&gt;
&lt;br /&gt;
Most important: use consistent upper- or lowercasing within one file !&lt;br /&gt;
&lt;br /&gt;
In general, in KDE the '''all-lowercase''' style is preferred.&lt;br /&gt;
&lt;br /&gt;
So, this is recommended:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
add_executable(foo foo.c)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is also acceptable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
ADD_EXECUTABLE(bar bar.c)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mixed casing as shown below works too, but should '''not''' be done within KDE:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Add_Executable(hello hello.c)&lt;br /&gt;
aDd_ExEcUtAbLe(blub blub.c)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== End commands ==&lt;br /&gt;
&lt;br /&gt;
To make the code easier to read, use empty commands for endforeach(), endif(), endfunction(),  endmacro() and endwhile().  Also, use empty else() commands.&lt;br /&gt;
&lt;br /&gt;
For example, do this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
if(FOOVAR)&lt;br /&gt;
   some_command(...)&lt;br /&gt;
else()&lt;br /&gt;
   another_command(...)&lt;br /&gt;
endif()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and '''not''' this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if(BARVAR)&lt;br /&gt;
   some_other_command(...)&lt;br /&gt;
endif(BARVAR)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Writing CMake Find-modules=&lt;br /&gt;
&lt;br /&gt;
==(Not) Using pkg-config==&lt;br /&gt;
&lt;br /&gt;
You are free to use pkg-config in FindXXX.cmake modules, as long as the following conditions are met:&lt;br /&gt;
* the FindXXX.cmake must also work without pkg-config, as long as the package is either installed to one of the default locations (as /usr or /usr/local) or if CMAKE_PREFIX_PATH is set accordingly&lt;br /&gt;
* use only find_package(PkgConfig), don't use include(UsePkgConfig), this one is deprecated&lt;br /&gt;
* make sure the variables created by pkg_check_modules() are all prefixed with &amp;quot;PC_&amp;quot;, so they don't mix up with other variables, e.g. set via find_path() etc.&lt;br /&gt;
* FindLibXml2.cmake as shipped with CMake 2.8.5 is a good example how pkg-config should be handled&lt;br /&gt;
* putting something like if(NOT WIN32) around the pkg-config stuff is not necessary (and should be removed if it is somewhere). If pkg-config is not found, e.g. on Windows, the macros simply do nothing.&lt;br /&gt;
&lt;br /&gt;
==Follow CMake's readme.txt==&lt;br /&gt;
&lt;br /&gt;
Follow the style guide from CMake when writing some FindFoo.cmake module: &lt;br /&gt;
[http://www.cmake.org/cgi-bin/viewcvs.cgi/Modules/readme.txt?root=CMake&amp;amp;view=markup readme.txt]&lt;br /&gt;
&lt;br /&gt;
==Use FindPackageHandleStandardArgs.cmake==&lt;br /&gt;
For checking the results inside the Find-module, the macro find_package_handle_standard_args() (coming with CMake) should be used, using the new extended syntax, which supports also version checking.&lt;br /&gt;
&lt;br /&gt;
==Avoid Micro-Optimzations==&lt;br /&gt;
Micro-optimizations like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if(FOO_LIBRARY AND FOO_INCLUDE_DIR)&lt;br /&gt;
   set(FOO_FOUND TRUE)&lt;br /&gt;
else()&lt;br /&gt;
   ... execute the whole find-logic&lt;br /&gt;
endif()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
should be removed, the find-logic should be executed always. These shortcuts can cause problems e.g. when the same file is used from multiple directories but e.g. with different required versions or components etc.&lt;br /&gt;
&lt;br /&gt;
Also manually quieting the module should not be done:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ( SQLITE_INCLUDE_DIR AND SQLITE_LIBRARIES )&lt;br /&gt;
   set(Sqlite_FIND_QUIETLY TRUE)&lt;br /&gt;
endif ( SQLITE_INCLUDE_DIR AND SQLITE_LIBRARIES )&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If find_package_handle_standard_args() is used, this is completely unnecessary, since find_package_handle_standard_args() only prints something if the result has changed compared to the previous run. So if, as in this example, sqlite has already been found, find_package_handle_standard_args() will only print this information during the first CMake run, but not on successive runs.&lt;br /&gt;
&lt;br /&gt;
So, do not add such code. It is unnecessary and makes the modules look more complicated than necessary.&lt;br /&gt;
&lt;br /&gt;
=Writing FooConfig.cmake files=&lt;br /&gt;
&lt;br /&gt;
* See http://quickgit.kde.org/?p=kdeexamples.git&amp;amp;a=tree&amp;amp;hb=HEAD&amp;amp;f=buildsystem/HowToInstallALibrary for a fully commented example&lt;br /&gt;
&lt;br /&gt;
* See also:&lt;br /&gt;
** http://www.cmake.org/Wiki/CMake/Tutorials/Exporting_and_Importing_Targets&lt;br /&gt;
** http://www.cmake.org/Wiki/CMake/Tutorials/How_to_create_a_ProjectConfig.cmake_file&lt;br /&gt;
** http://www.cmake.org/Wiki/CMake/Tutorials/Packaging&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Policies/CMake_Coding_Style</id>
		<title>Policies/CMake Coding Style</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Policies/CMake_Coding_Style"/>
				<updated>2012-01-15T13:39:31Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document describes the recommended coding style for CMake files in KDE, i.e. CMakeLists.txt files and *.cmake files.&lt;br /&gt;
&lt;br /&gt;
=General=&lt;br /&gt;
&lt;br /&gt;
To put in in one sentence: be as careful when writing the CMake files as when you are writing C++ code.&lt;br /&gt;
&lt;br /&gt;
==Indentation==&lt;br /&gt;
&lt;br /&gt;
Indent all code correctly, i.e. the body of &lt;br /&gt;
&lt;br /&gt;
* if/else/endif&lt;br /&gt;
* foreach/endforeach&lt;br /&gt;
* while/endwhile&lt;br /&gt;
* macro/endmacro&lt;br /&gt;
* function/endfunction&lt;br /&gt;
&lt;br /&gt;
Use spaces for indenting, 2, 3 or 4 spaces preferably. Use the same amount&lt;br /&gt;
of spaces for indenting as is used in the rest of the file. Do not use tabs.&lt;br /&gt;
&lt;br /&gt;
==Upper/lower casing==&lt;br /&gt;
&lt;br /&gt;
Most important: use consistent upper- or lowercasing within one file !&lt;br /&gt;
&lt;br /&gt;
In general, in KDE the '''all-lowercase''' style is preferred.&lt;br /&gt;
&lt;br /&gt;
So, this is recommended:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
add_executable(foo foo.c)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is also acceptable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
ADD_EXECUTABLE(bar bar.c)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mixed casing as shown below works too, but should '''not''' be done within KDE:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Add_Executable(hello hello.c)&lt;br /&gt;
aDd_ExEcUtAbLe(blub blub.c)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== End commands ==&lt;br /&gt;
&lt;br /&gt;
To make the code easier to read, use empty commands for endforeach(), endif(), endfunction(),  endmacro() and endwhile().  Also, use empty else() commands.&lt;br /&gt;
&lt;br /&gt;
For example, do this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
if(FOOVAR)&lt;br /&gt;
   some_command(...)&lt;br /&gt;
else()&lt;br /&gt;
   another_command(...)&lt;br /&gt;
endif()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and '''not''' this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if(BARVAR)&lt;br /&gt;
   some_other_command(...)&lt;br /&gt;
endif(BARVAR)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Writing CMake Find-modules=&lt;br /&gt;
&lt;br /&gt;
==(Not) Using pkg-config==&lt;br /&gt;
&lt;br /&gt;
You are free to use pkg-config in FindXXX.cmake modules, as long as the following conditions are met:&lt;br /&gt;
* the FindXXX.cmake must also work without pkg-config, as long as the package is either installed to one of the default locations (as /usr or /usr/local) or if CMAKE_PREFIX_PATH is set accordingly&lt;br /&gt;
* use only find_package(PkgConfig), don't use include(UsePkgConfig), this one is deprecated&lt;br /&gt;
* make sure the variables created by pkg_check_modules() are all prefixed with &amp;quot;PC_&amp;quot;, so they don't mix up with other variables, e.g. set via find_path() etc.&lt;br /&gt;
* FindLibXml2.cmake as shipped with CMake 2.8.5 is a good example how pkg-config should be handled&lt;br /&gt;
* putting something like if(NOT WIN32) around the pkg-config stuff is not necessary (and should be removed if it is somewhere). If pkg-config is not found, e.g. on Windows, the macros simply do nothing.&lt;br /&gt;
&lt;br /&gt;
==Follow CMake's readme.txt==&lt;br /&gt;
&lt;br /&gt;
Follow the style guide from CMake when writing some FindFoo.cmake module: &lt;br /&gt;
[http://www.cmake.org/cgi-bin/viewcvs.cgi/Modules/readme.txt?root=CMake&amp;amp;view=markup readme.txt]&lt;br /&gt;
&lt;br /&gt;
==Use FindPackageHandleStandardArgs.cmake==&lt;br /&gt;
For checking the results inside the Find-module, the macro find_package_handle_standard_args() (coming with CMake) should be used, using the new extended syntax, which supports also version checking.&lt;br /&gt;
&lt;br /&gt;
==Avoid Micro-Optimzations==&lt;br /&gt;
Micro-optimizations like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if(FOO_LIBRARY AND FOO_INCLUDE_DIR)&lt;br /&gt;
   set(FOO_FOUND TRUE)&lt;br /&gt;
else()&lt;br /&gt;
   ... execute the whole find-logic&lt;br /&gt;
endif()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
should be removed, the find-logic should be executed always. These shortcuts can cause problems e.g. when the same file is used from multiple directories but e.g. with different required versions or components etc.&lt;br /&gt;
&lt;br /&gt;
Also manually quieting the module should not be done:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ( SQLITE_INCLUDE_DIR AND SQLITE_LIBRARIES )&lt;br /&gt;
   set(Sqlite_FIND_QUIETLY TRUE)&lt;br /&gt;
endif ( SQLITE_INCLUDE_DIR AND SQLITE_LIBRARIES )&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If find_package_handle_standard_args() is used, this is completely unnecessary, since find_package_handle_standard_args() only prints something if the result has changed compared to the previous run. So if, as in this example, sqlite has already been found, find_package_handle_standard_args() will only print this information during the first CMake run, but not on successive runs.&lt;br /&gt;
&lt;br /&gt;
So, do not add such code. It is unnecessary and makes the modules look more complicated than necessary.&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Policies/CMake_Coding_Style</id>
		<title>Policies/CMake Coding Style</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Policies/CMake_Coding_Style"/>
				<updated>2012-01-15T13:32:42Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document describes the recommended coding style for CMake files in KDE, i.e. CMakeLists.txt files and *.cmake files.&lt;br /&gt;
&lt;br /&gt;
=General=&lt;br /&gt;
&lt;br /&gt;
To put in in one sentence: be as careful when writing the CMake files as when you are writing C++ code.&lt;br /&gt;
&lt;br /&gt;
==Indentation==&lt;br /&gt;
&lt;br /&gt;
Indent all code correctly, i.e. the body of &lt;br /&gt;
&lt;br /&gt;
* if/else/endif&lt;br /&gt;
* foreach/endforeach&lt;br /&gt;
* while/endwhile&lt;br /&gt;
* macro/endmacro&lt;br /&gt;
* function/endfunction&lt;br /&gt;
&lt;br /&gt;
Use spaces for indenting, 2, 3 or 4 spaces preferably. Use the same amount&lt;br /&gt;
of spaces for indenting as is used in the rest of the file. Do not use tabs.&lt;br /&gt;
&lt;br /&gt;
==Upper/lower casing==&lt;br /&gt;
&lt;br /&gt;
Most important: use consistent upper- or lowercasing within one file !&lt;br /&gt;
&lt;br /&gt;
In general, in KDE the '''all-lowercase''' style is preferred.&lt;br /&gt;
&lt;br /&gt;
So, this is recommended:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
add_executable(foo foo.c)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is also acceptable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
ADD_EXECUTABLE(bar bar.c)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mixed casing as shown below works too, but should '''not''' be done within KDE:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Add_Executable(hello hello.c)&lt;br /&gt;
aDd_ExEcUtAbLe(blub blub.c)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== End commands ==&lt;br /&gt;
&lt;br /&gt;
To make the code easier to read, use empty commands for endforeach(), endif(), endfunction(),  endmacro() and endwhile().  Also, use empty else() commands.&lt;br /&gt;
&lt;br /&gt;
For example, do this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
if(FOOVAR)&lt;br /&gt;
  some_command(...)&lt;br /&gt;
else()&lt;br /&gt;
  another_command(...)&lt;br /&gt;
endif()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and '''not''' this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if(BARVAR)&lt;br /&gt;
   some_other_command(...)&lt;br /&gt;
endif(BARVAR)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Writing CMake Find-modules=&lt;br /&gt;
&lt;br /&gt;
==(Not) Using pkg-config==&lt;br /&gt;
&lt;br /&gt;
You are free to use pkg-config in FindXXX.cmake modules, as long as the following conditions are met:&lt;br /&gt;
* the FindXXX.cmake must also work without pkg-config, as long as the package is either installed to one of the default locations (as /usr or /usr/local) or if CMAKE_PREFIX_PATH is set accordingly&lt;br /&gt;
* use only find_package(PkgConfig), don't use include(UsePkgConfig), this one is deprecated&lt;br /&gt;
* make sure the variables created by pkg_check_modules() are all prefixed with &amp;quot;PC_&amp;quot;, so they don't mix up with other variables, e.g. set via find_path() etc.&lt;br /&gt;
* FindLibXml2.cmake as shipped with CMake 2.8.5 is a good example how pkg-config should be handled&lt;br /&gt;
* putting something like if(NOT WIN32) around the pkg-config stuff is not necessary (and should be removed if it is somewhere). If pkg-config is not found, e.g. on Windows, the macros simply do nothing.&lt;br /&gt;
&lt;br /&gt;
==Follow CMake's readme.txt==&lt;br /&gt;
&lt;br /&gt;
Follow the style guide from CMake when writing some FindFoo.cmake module: &lt;br /&gt;
[http://www.cmake.org/cgi-bin/viewcvs.cgi/Modules/readme.txt?root=CMake&amp;amp;view=markup readme.txt]&lt;br /&gt;
&lt;br /&gt;
==Use FindPackageHandleStandardArgs.cmake==&lt;br /&gt;
For checking the results inside the Find-module, the macro find_package_handle_standard_args() (coming with CMake) should be used, using the new extended syntax, which supports also version checking.&lt;br /&gt;
&lt;br /&gt;
==Avoid Micro-Optimzations==&lt;br /&gt;
Micro-optimizations like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if(FOO_LIBRARY AND FOO_INCLUDE_DIR)&lt;br /&gt;
  set(FOO_FOUND TRUE)&lt;br /&gt;
else()&lt;br /&gt;
  ... execute the whole find-logic&lt;br /&gt;
endif()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
should be removed, the find-logic should be executed always. These shortcuts can cause problems e.g. when the same file is used from multiple directories but e.g. with different required versions or components etc.&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Policies/CMake_Coding_Style</id>
		<title>Policies/CMake Coding Style</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Policies/CMake_Coding_Style"/>
				<updated>2012-01-14T20:06:10Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document describes the recommended coding style for CMake files in KDE, i.e. CMakeLists.txt files and *.cmake files.&lt;br /&gt;
&lt;br /&gt;
==Indentation==&lt;br /&gt;
&lt;br /&gt;
Indent all code correctly, i.e. the body of &lt;br /&gt;
&lt;br /&gt;
* if/else/endif&lt;br /&gt;
* foreach/endforeach&lt;br /&gt;
* while/endwhile&lt;br /&gt;
* macro/endmacro&lt;br /&gt;
* function/endfunction&lt;br /&gt;
&lt;br /&gt;
Use spaces for indenting, 2, 3 or 4 spaces preferably. Use the same amount&lt;br /&gt;
of spaces for indenting as is used in the rest of the file. Do not use tabs.&lt;br /&gt;
&lt;br /&gt;
==Upper/lower casing==&lt;br /&gt;
&lt;br /&gt;
Most important: use consistent upper- or lowercasing within one file !&lt;br /&gt;
&lt;br /&gt;
In general, in KDE the '''all-lowercase''' style is preferred.&lt;br /&gt;
&lt;br /&gt;
So, this is recommended:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
add_executable(foo foo.c)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is also acceptable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
ADD_EXECUTABLE(bar bar.c)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mixed casing as shown below works too, but should '''not''' be done within KDE:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Add_Executable(hello hello.c)&lt;br /&gt;
aDd_ExEcUtAbLe(blub blub.c)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== End commands ==&lt;br /&gt;
&lt;br /&gt;
To make the code easier to read, use empty commands for endforeach(), endif(), endfunction(),  endmacro() and endwhile().  Also, use empty else() commands.&lt;br /&gt;
&lt;br /&gt;
For example, do this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
if(FOOVAR)&lt;br /&gt;
 some_command(...)&lt;br /&gt;
else()&lt;br /&gt;
 another_command(...)&lt;br /&gt;
endif()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and '''not''' this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if(BARVAR)&lt;br /&gt;
  some_other_command(...)&lt;br /&gt;
endif(BARVAR)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==(Not) Using pkg-config==&lt;br /&gt;
&lt;br /&gt;
You are free to use pkg-config in FindXXX.cmake modules, as long as the following conditions are met:&lt;br /&gt;
* the FindXXX.cmake must also work without pkg-config, as long as the package is either installed to one of the default locations (as /usr or /usr/local) or if CMAKE_PREFIX_PATH is set accordingly&lt;br /&gt;
* use only find_package(PkgConfig), don't use include(UsePkgConfig), this one is deprecated&lt;br /&gt;
* make sure the variables created by pkg_check_modules() are all prefixed with &amp;quot;PC_&amp;quot;, so they don't mix up with other variables, e.g. set via find_path() etc.&lt;br /&gt;
* FindLibXml2.cmake as shipped with CMake 2.8.5 is a good example how pkg-config should be handled&lt;br /&gt;
* putting something like if(NOT WIN32) around the pkg-config stuff is not necessary (and should be removed if it is somewhere). If pkg-config is not found, e.g. on Windows, the macros simply do nothing.&lt;br /&gt;
&lt;br /&gt;
==Writing CMake Find-modules==&lt;br /&gt;
&lt;br /&gt;
* Follow the style guide from CMake when writing some FindFoo.cmake module: &lt;br /&gt;
[http://www.cmake.org/cgi-bin/viewcvs.cgi/Modules/readme.txt?root=CMake&amp;amp;view=markup readme.txt]&lt;br /&gt;
&lt;br /&gt;
* For checking the results inside the Find-module, the macro find_package_handle_standard_args() (coming with CMake) should be used, using the new extended syntax, which supports also version checking.&lt;br /&gt;
&lt;br /&gt;
* Micro-optimizations like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if(FOO_LIBRARY AND FOO_INCLUDE_DIR)&lt;br /&gt;
  set(FOO_FOUND TRUE)&lt;br /&gt;
else()&lt;br /&gt;
  ... execute the whole find-logic&lt;br /&gt;
endif()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
should be removed, the find-logic should be executed always. These shortcuts can cause problems e.g. when the same file is used from multiple directories but e.g. with different required versions or components etc.&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Policies/CMake_Coding_Style</id>
		<title>Policies/CMake Coding Style</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Policies/CMake_Coding_Style"/>
				<updated>2012-01-14T20:04:03Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: /* Upper/lower casing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document describes the recommended coding style for CMake files in KDE, i.e. CMakeLists.txt files and *.cmake files.&lt;br /&gt;
&lt;br /&gt;
==Indentation==&lt;br /&gt;
&lt;br /&gt;
Indent all code correctly, i.e. the body of &lt;br /&gt;
&lt;br /&gt;
* if/else/endif&lt;br /&gt;
* foreach/endforeach&lt;br /&gt;
* while/endwhile&lt;br /&gt;
* macro/endmacro&lt;br /&gt;
* function/endfunction&lt;br /&gt;
&lt;br /&gt;
Use spaces for indenting, 2, 3 or 4 spaces preferably. Use the same amount&lt;br /&gt;
of spaces for indenting as is used in the rest of the file. Do not use tabs.&lt;br /&gt;
&lt;br /&gt;
==Upper/lower casing==&lt;br /&gt;
&lt;br /&gt;
Most important: use consistent upper- or lowercasing within one file !&lt;br /&gt;
&lt;br /&gt;
In general, in KDE the '''all-lowercase''' style is preferred.&lt;br /&gt;
&lt;br /&gt;
So, this is recommended:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
add_executable(foo foo.c)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is also acceptable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
ADD_EXECUTABLE(bar bar.c)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mixed casing as shown below works too, but should '''not''' be done within KDE:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
Add_Executable(hello hello.c)&lt;br /&gt;
aDd_ExEcUtAbLe(blub blub.c)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== End commands ==&lt;br /&gt;
&lt;br /&gt;
To make the code easier to read, use empty commands for endforeach(), endif(), endfunction(),  endmacro() and endwhile().  Also, use empty else() commands.&lt;br /&gt;
&lt;br /&gt;
For example, do this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if(FOOVAR)&lt;br /&gt;
 some_command(...)&lt;br /&gt;
else()&lt;br /&gt;
 another_command(...)&lt;br /&gt;
endif()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and not this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if(FOOVAR)&lt;br /&gt;
  some_command(...)&lt;br /&gt;
else(FOOVAR)&lt;br /&gt;
  another_command(...)&lt;br /&gt;
endif(FOOVAR)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==(Not) Using pkg-config==&lt;br /&gt;
&lt;br /&gt;
You are free to use pkg-config in FindXXX.cmake modules, as long as the following conditions are met:&lt;br /&gt;
* the FindXXX.cmake must also work without pkg-config, as long as the package is either installed to one of the default locations (as /usr or /usr/local) or if CMAKE_PREFIX_PATH is set accordingly&lt;br /&gt;
* use only find_package(PkgConfig), don't use include(UsePkgConfig), this one is deprecated&lt;br /&gt;
* make sure the variables created by pkg_check_modules() are all prefixed with &amp;quot;PC_&amp;quot;, so they don't mix up with other variables, e.g. set via find_path() etc.&lt;br /&gt;
* FindLibXml2.cmake as shipped with CMake 2.8.5 is a good example how pkg-config should be handled&lt;br /&gt;
* putting something like if(NOT WIN32) around the pkg-config stuff is not necessary (and should be removed if it is somewhere). If pkg-config is not found, e.g. on Windows, the macros simply do nothing.&lt;br /&gt;
&lt;br /&gt;
==Writing CMake Find-modules==&lt;br /&gt;
&lt;br /&gt;
* Follow the style guide from CMake when writing some FindFoo.cmake module: &lt;br /&gt;
[http://www.cmake.org/cgi-bin/viewcvs.cgi/Modules/readme.txt?root=CMake&amp;amp;view=markup readme.txt]&lt;br /&gt;
&lt;br /&gt;
* For checking the results inside the Find-module, the macro find_package_handle_standard_args() (coming with CMake) should be used, using the new extended syntax, which supports also version checking.&lt;br /&gt;
&lt;br /&gt;
* Micro-optimizations like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if(FOO_LIBRARY AND FOO_INCLUDE_DIR)&lt;br /&gt;
  set(FOO_FOUND TRUE)&lt;br /&gt;
else()&lt;br /&gt;
  ... execute the whole find-logic&lt;br /&gt;
endif()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
should be removed, the find-logic should be executed always. These shortcuts can cause problems e.g. when the same file is used from multiple directories but e.g. with different required versions or components etc.&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/ECM_SourceIncompatChanges</id>
		<title>Development/ECM SourceIncompatChanges</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/ECM_SourceIncompatChanges"/>
				<updated>2011-11-15T18:34:40Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: /* MacroLogFeature.cmake */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== FindFLEX.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake now, which is named FindFlex.cmake (different casing !).&lt;br /&gt;
Beside that there should be no changes in behaviour.&lt;br /&gt;
&lt;br /&gt;
* find_package(FLEX) -&amp;gt; find_package(Flex)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== FindGetText.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake now.&lt;br /&gt;
The syntax of GETTEXT_PROCESS_PO_FILES() changed a bit, it now needs the additional keyword &amp;quot;PO_FILES.&lt;br /&gt;
&lt;br /&gt;
* gettext_process_po_files(de ALL INSTALL_DESTINATION ${dest} file1.po file2.po) -&amp;gt; gettext_process_po_files(de ALL INSTALL_DESTINATION ${dest} PO_FILES file1.po file2.po)&lt;br /&gt;
&lt;br /&gt;
=== FindGIF.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake now.&lt;br /&gt;
There is a minor difference, which will not affect many systems. The KDE version accepted only giflib version 4, while the CMake version accepted any version of giflib. If giflib version 4 .x is required, the version can now be specified:&lt;br /&gt;
&lt;br /&gt;
* find_package(GIF) -&amp;gt; find_package(GIF 4 )&lt;br /&gt;
&lt;br /&gt;
This actually only was an issue on some relatively old Sun machines in 2006. Maybe today it is not even there a problem anymore.&lt;br /&gt;
&lt;br /&gt;
=== FindLibXslt.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake 2.8.7 now.&lt;br /&gt;
There are two changes compared to the one in kdelibs:&lt;br /&gt;
&lt;br /&gt;
* ${LIBEXSLT_LIBRARIES} -&amp;gt; ${LIBXSLT_EXSLT_LIBRARIES}&lt;br /&gt;
* WinCE is probably not supported anymore, patches are welcome&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== FindRUBY.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore, use FindRuby.cmake coming with CMake instead. Most variables are the same. Below are the changes:&lt;br /&gt;
&lt;br /&gt;
* find_package(RUBY) -&amp;gt; find_package(Ruby)&lt;br /&gt;
* RUBY_INCLUDE_PATH -&amp;gt; RUBY_INCLUDE_DIRS&lt;br /&gt;
&lt;br /&gt;
=== FindX11.cmake ===&lt;br /&gt;
&lt;br /&gt;
The following two variables have been removed, use the newer ones instead:&lt;br /&gt;
&lt;br /&gt;
* X11_Xss_FOUND -&amp;gt; X11_Xscreensaver_FOUND&lt;br /&gt;
* X11_Xss_LIB -&amp;gt; X11_Xscreensaver_LIB&lt;br /&gt;
&lt;br /&gt;
The following libraries are now not part of X11_LIBRARIES anymore, so they may have to be added to target_link_libraries() explicitely where needed:&lt;br /&gt;
&lt;br /&gt;
* X11_Xau_LIB&lt;br /&gt;
* X11_Xft_LIB&lt;br /&gt;
* X11_Xdmcp_LIB&lt;br /&gt;
* X11_Xpm_LIB&lt;br /&gt;
&lt;br /&gt;
=== MacroAddCompileFlags.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(.. APPEND_STRING) instead (new in CMake 2.8.6).&lt;br /&gt;
&lt;br /&gt;
* include(MacroAddCompileFlags) -&amp;gt; delete&lt;br /&gt;
* macro_add_compile_flags(target &amp;quot;-O2 -g&amp;quot;) -&amp;gt; set_property(TARGET target APPEND_STRING PROPERTY COMPILE_FLAGS &amp;quot; -O2 -g&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== MacroAddLinkFlags.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(.. APPEND_STRING) instead (new in CMake 2.8.6).&lt;br /&gt;
&lt;br /&gt;
* include(MacroAddLinkFlags) -&amp;gt; delete&lt;br /&gt;
* macro_add_link_flags(target &amp;quot;-no-rpath&amp;quot;) -&amp;gt; set_property(TARGET target APPEND_STRING PROPERTY LINK_FLAGS &amp;quot; -no-rpath&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== MacroAdditionalCleanFiles.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(... APPEND ...) instead.&lt;br /&gt;
&lt;br /&gt;
* include(MacroAdditionalCleanFiles) -&amp;gt; delete&lt;br /&gt;
* macro_additional_clean_files(file1 file2 fileN) -&amp;gt; set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES &amp;quot;file1;file2;fileN&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
=== MacroLogFeature.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed, instead FeatureSummary.cmake from CMake &amp;gt;= 2.8.6 has to be used, which has even more functionality.&lt;br /&gt;
Please have a look at the documentation of FeatureSummary.cmake on the cmake manpage.&lt;br /&gt;
&lt;br /&gt;
* macro_log_feature(&amp;lt;variable&amp;gt; &amp;lt;FEATURE&amp;gt; &amp;lt;DESCRIPTION&amp;gt; &amp;lt;URL&amp;gt; &amp;lt;REQUIRED&amp;gt; &amp;lt;MIN_VERSION&amp;gt; &amp;lt;COMMENTS&amp;gt;) -&amp;gt; set_package_properties(FEATURE PROPERTIES DESCRIPTION &amp;lt;DESCRIPTION&amp;gt; URL &amp;lt;URL&amp;gt; TYPE (RUNTIME|OPTIONAL|RECOMMENDED|REQUIRED) PURPOSE &amp;quot;good for something&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* macro_display_feature_log() -&amp;gt; feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGE)&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalAddSubdirectory.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file is now part of the extra-cmake-modules package and thus has been renamed to ECMOptionalAddSubdirectory.cmake&lt;br /&gt;
&lt;br /&gt;
* include(MacroOptionalAddSubdirectory) -&amp;gt; include (ECMOptionalAddSubdirectory)&lt;br /&gt;
* macro_optional_add_subdirectory(...) -&amp;gt; ecm_optional_add_subdirectory(...)&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalDependPackage.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed, the purpose was broken.&lt;br /&gt;
&lt;br /&gt;
* include (MacroOptionalDependPackage) -&amp;gt; delete&lt;br /&gt;
* macro_optional_depend_package() -&amp;gt; delete&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalFindPackage.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore. Instead, starting with CMake 2.8.6, every find_package() call which is not REQUIRED can be disabled by setting the variable CMAKE_DISABLE_FIND_PACKAGE_&amp;lt;PackageName&amp;gt; to TRUE. This makes this macro unnecessary.&lt;br /&gt;
&lt;br /&gt;
* include(MacroFindPackage) -&amp;gt; delete&lt;br /&gt;
* macro_optional_find_package(Foo ...) -&amp;gt; find_package(Foo ... )&lt;br /&gt;
&lt;br /&gt;
=== MacroPushRequiredVars.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been merged into CMake, but has been renamed to CMakePushCheckState.cmake.&lt;br /&gt;
&lt;br /&gt;
* include(MacroPushRequiredVars) -&amp;gt; include(CMakePushCheckState)&lt;br /&gt;
* macro_push_required_vars() -&amp;gt; cmake_push_check_state()&lt;br /&gt;
* macro_pop_required_vars() -&amp;gt; cmake_pop_check_state()&lt;br /&gt;
&lt;br /&gt;
=== MacroWriteBasicCMakeVersionFile.cmake ===&lt;br /&gt;
&lt;br /&gt;
This macro has been merged into CMake, but has been renamed to WriteBasicConfigVersionFile.cmake, also the syntax changed slightly. To get exactly the same behaviour as with the old macro, do as shown below. For details see the documentation in the man page.&lt;br /&gt;
&lt;br /&gt;
* include(MacroWriteBasicCMakeVersionFile) -&amp;gt; include (WriteBasicConfigVersionFile)&lt;br /&gt;
* macro_write_basic_cmake_version_file(&amp;lt;outfilename&amp;gt; 1 2 3) -&amp;gt; write_basic_config_version_file(&amp;lt;outfilename&amp;gt; VERSION 1.2.3 COMPATIBILITY AnyNewerVersion )&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/ECM_SourceIncompatChanges</id>
		<title>Development/ECM SourceIncompatChanges</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/ECM_SourceIncompatChanges"/>
				<updated>2011-11-15T18:32:49Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== FindFLEX.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake now, which is named FindFlex.cmake (different casing !).&lt;br /&gt;
Beside that there should be no changes in behaviour.&lt;br /&gt;
&lt;br /&gt;
* find_package(FLEX) -&amp;gt; find_package(Flex)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== FindGetText.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake now.&lt;br /&gt;
The syntax of GETTEXT_PROCESS_PO_FILES() changed a bit, it now needs the additional keyword &amp;quot;PO_FILES.&lt;br /&gt;
&lt;br /&gt;
* gettext_process_po_files(de ALL INSTALL_DESTINATION ${dest} file1.po file2.po) -&amp;gt; gettext_process_po_files(de ALL INSTALL_DESTINATION ${dest} PO_FILES file1.po file2.po)&lt;br /&gt;
&lt;br /&gt;
=== FindGIF.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake now.&lt;br /&gt;
There is a minor difference, which will not affect many systems. The KDE version accepted only giflib version 4, while the CMake version accepted any version of giflib. If giflib version 4 .x is required, the version can now be specified:&lt;br /&gt;
&lt;br /&gt;
* find_package(GIF) -&amp;gt; find_package(GIF 4 )&lt;br /&gt;
&lt;br /&gt;
This actually only was an issue on some relatively old Sun machines in 2006. Maybe today it is not even there a problem anymore.&lt;br /&gt;
&lt;br /&gt;
=== FindLibXslt.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake 2.8.7 now.&lt;br /&gt;
There are two changes compared to the one in kdelibs:&lt;br /&gt;
&lt;br /&gt;
* ${LIBEXSLT_LIBRARIES} -&amp;gt; ${LIBXSLT_EXSLT_LIBRARIES}&lt;br /&gt;
* WinCE is probably not supported anymore, patches are welcome&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== FindRUBY.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore, use FindRuby.cmake coming with CMake instead. Most variables are the same. Below are the changes:&lt;br /&gt;
&lt;br /&gt;
* find_package(RUBY) -&amp;gt; find_package(Ruby)&lt;br /&gt;
* RUBY_INCLUDE_PATH -&amp;gt; RUBY_INCLUDE_DIRS&lt;br /&gt;
&lt;br /&gt;
=== FindX11.cmake ===&lt;br /&gt;
&lt;br /&gt;
The following two variables have been removed, use the newer ones instead:&lt;br /&gt;
&lt;br /&gt;
* X11_Xss_FOUND -&amp;gt; X11_Xscreensaver_FOUND&lt;br /&gt;
* X11_Xss_LIB -&amp;gt; X11_Xscreensaver_LIB&lt;br /&gt;
&lt;br /&gt;
The following libraries are now not part of X11_LIBRARIES anymore, so they may have to be added to target_link_libraries() explicitely where needed:&lt;br /&gt;
&lt;br /&gt;
* X11_Xau_LIB&lt;br /&gt;
* X11_Xft_LIB&lt;br /&gt;
* X11_Xdmcp_LIB&lt;br /&gt;
* X11_Xpm_LIB&lt;br /&gt;
&lt;br /&gt;
=== MacroAddCompileFlags.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(.. APPEND_STRING) instead (new in CMake 2.8.6).&lt;br /&gt;
&lt;br /&gt;
* include(MacroAddCompileFlags) -&amp;gt; delete&lt;br /&gt;
* macro_add_compile_flags(target &amp;quot;-O2 -g&amp;quot;) -&amp;gt; set_property(TARGET target APPEND_STRING PROPERTY COMPILE_FLAGS &amp;quot; -O2 -g&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== MacroAddLinkFlags.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(.. APPEND_STRING) instead (new in CMake 2.8.6).&lt;br /&gt;
&lt;br /&gt;
* include(MacroAddLinkFlags) -&amp;gt; delete&lt;br /&gt;
* macro_add_link_flags(target &amp;quot;-no-rpath&amp;quot;) -&amp;gt; set_property(TARGET target APPEND_STRING PROPERTY LINK_FLAGS &amp;quot; -no-rpath&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== MacroAdditionalCleanFiles.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(... APPEND ...) instead.&lt;br /&gt;
&lt;br /&gt;
* include(MacroAdditionalCleanFiles) -&amp;gt; delete&lt;br /&gt;
* macro_additional_clean_files(file1 file2 fileN) -&amp;gt; set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES &amp;quot;file1;file2;fileN&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
=== MacroLogFeature.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed, instead FeatureSummary.cmake from CMake &amp;gt;= 2.8.6 has to be used, which has even more functionality.&lt;br /&gt;
Please have a look at the documentation of FeatureSummary.cmake on the cmake manpage.&lt;br /&gt;
&lt;br /&gt;
* macro_log_feature(&amp;lt;VAR&amp;gt; &amp;lt;FEATURE&amp;gt; &amp;lt;DESCRIPTION&amp;gt; &amp;lt;URL&amp;gt; &amp;lt;REQUIRED&amp;gt; &amp;lt;MIN_VERSION&amp;gt; &amp;lt;COMMENTS&amp;gt;) -&amp;gt; set_package_properties(FEATURE PROPERTIES DESCRIPTION &amp;lt;DESCRIPTION&amp;gt; URL &amp;lt;URL&amp;gt; TYPE (RUNTIME|OPTIONAL|RECOMMENDED|REQUIRED) PURPOSE &amp;quot;good for something&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* macro_display_feature_log() -&amp;gt; feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGE)&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalAddSubdirectory.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file is now part of the extra-cmake-modules package and thus has been renamed to ECMOptionalAddSubdirectory.cmake&lt;br /&gt;
&lt;br /&gt;
* include(MacroOptionalAddSubdirectory) -&amp;gt; include (ECMOptionalAddSubdirectory)&lt;br /&gt;
* macro_optional_add_subdirectory(...) -&amp;gt; ecm_optional_add_subdirectory(...)&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalDependPackage.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed, the purpose was broken.&lt;br /&gt;
&lt;br /&gt;
* include (MacroOptionalDependPackage) -&amp;gt; delete&lt;br /&gt;
* macro_optional_depend_package() -&amp;gt; delete&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalFindPackage.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore. Instead, starting with CMake 2.8.6, every find_package() call which is not REQUIRED can be disabled by setting the variable CMAKE_DISABLE_FIND_PACKAGE_&amp;lt;PackageName&amp;gt; to TRUE. This makes this macro unnecessary.&lt;br /&gt;
&lt;br /&gt;
* include(MacroFindPackage) -&amp;gt; delete&lt;br /&gt;
* macro_optional_find_package(Foo ...) -&amp;gt; find_package(Foo ... )&lt;br /&gt;
&lt;br /&gt;
=== MacroPushRequiredVars.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been merged into CMake, but has been renamed to CMakePushCheckState.cmake.&lt;br /&gt;
&lt;br /&gt;
* include(MacroPushRequiredVars) -&amp;gt; include(CMakePushCheckState)&lt;br /&gt;
* macro_push_required_vars() -&amp;gt; cmake_push_check_state()&lt;br /&gt;
* macro_pop_required_vars() -&amp;gt; cmake_pop_check_state()&lt;br /&gt;
&lt;br /&gt;
=== MacroWriteBasicCMakeVersionFile.cmake ===&lt;br /&gt;
&lt;br /&gt;
This macro has been merged into CMake, but has been renamed to WriteBasicConfigVersionFile.cmake, also the syntax changed slightly. To get exactly the same behaviour as with the old macro, do as shown below. For details see the documentation in the man page.&lt;br /&gt;
&lt;br /&gt;
* include(MacroWriteBasicCMakeVersionFile) -&amp;gt; include (WriteBasicConfigVersionFile)&lt;br /&gt;
* macro_write_basic_cmake_version_file(&amp;lt;outfilename&amp;gt; 1 2 3) -&amp;gt; write_basic_config_version_file(&amp;lt;outfilename&amp;gt; VERSION 1.2.3 COMPATIBILITY AnyNewerVersion )&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/ECM_SourceIncompatChanges</id>
		<title>Development/ECM SourceIncompatChanges</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/ECM_SourceIncompatChanges"/>
				<updated>2011-10-25T21:10:36Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== FindFLEX.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake now, which is named FindFlex.cmake (different casing !).&lt;br /&gt;
Beside that there should be no changes in behaviour.&lt;br /&gt;
&lt;br /&gt;
* find_package(FLEX) -&amp;gt; find_package(Flex)&lt;br /&gt;
&lt;br /&gt;
=== FindGIF.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake now.&lt;br /&gt;
There is a minor difference, which will not affect many systems. The KDE version accepted only giflib version 4, while the CMake version accepted any version of giflib. If giflib version 4 .x is required, the version can now be specified:&lt;br /&gt;
&lt;br /&gt;
* find_package(GIF) -&amp;gt; find_package(GIF 4 )&lt;br /&gt;
&lt;br /&gt;
This actually only was an issue on some relatively old Sun machines in 2006. Maybe today it is not even there a problem anymore.&lt;br /&gt;
&lt;br /&gt;
=== FindLibXslt.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake 2.8.7 now.&lt;br /&gt;
There are two changes compared to the one in kdelibs:&lt;br /&gt;
&lt;br /&gt;
* ${LIBEXSLT_LIBRARIES} -&amp;gt; ${LIBXSLT_EXSLT_LIBRARIES}&lt;br /&gt;
* WinCE is probably not supported anymore, patches are welcome&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== FindRUBY.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore, use FindRuby.cmake coming with CMake instead. Most variables are the same. Below are the changes:&lt;br /&gt;
&lt;br /&gt;
* find_package(RUBY) -&amp;gt; find_package(Ruby)&lt;br /&gt;
* RUBY_INCLUDE_PATH -&amp;gt; RUBY_INCLUDE_DIRS&lt;br /&gt;
&lt;br /&gt;
=== FindX11.cmake ===&lt;br /&gt;
&lt;br /&gt;
The following two variables have been removed, use the newer ones instead:&lt;br /&gt;
&lt;br /&gt;
* X11_Xss_FOUND -&amp;gt; X11_Xscreensaver_FOUND&lt;br /&gt;
* X11_Xss_LIB -&amp;gt; X11_Xscreensaver_LIB&lt;br /&gt;
&lt;br /&gt;
The following libraries are now not part of X11_LIBRARIES anymore, so they may have to be added to target_link_libraries() explicitely where needed:&lt;br /&gt;
&lt;br /&gt;
* X11_Xau_LIB&lt;br /&gt;
* X11_Xft_LIB&lt;br /&gt;
* X11_Xdmcp_LIB&lt;br /&gt;
* X11_Xpm_LIB&lt;br /&gt;
&lt;br /&gt;
=== MacroAddCompileFlags.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(.. APPEND_STRING) instead (new in CMake 2.8.6).&lt;br /&gt;
&lt;br /&gt;
* include(MacroAddCompileFlags) -&amp;gt; delete&lt;br /&gt;
* macro_add_compile_flags(target &amp;quot;-O2 -g&amp;quot;) -&amp;gt; set_property(TARGET target APPEND_STRING PROPERTY COMPILE_FLAGS &amp;quot; -O2 -g&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== MacroAddLinkFlags.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(.. APPEND_STRING) instead (new in CMake 2.8.6).&lt;br /&gt;
&lt;br /&gt;
* include(MacroAddLinkFlags) -&amp;gt; delete&lt;br /&gt;
* macro_add_link_flags(target &amp;quot;-no-rpath&amp;quot;) -&amp;gt; set_property(TARGET target APPEND_STRING PROPERTY LINK_FLAGS &amp;quot; -no-rpath&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== MacroAdditionalCleanFiles.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(... APPEND ...) instead.&lt;br /&gt;
&lt;br /&gt;
* include(MacroAdditionalCleanFiles) -&amp;gt; delete&lt;br /&gt;
* macro_additional_clean_files(file1 file2 fileN) -&amp;gt; set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES &amp;quot;file1;file2;fileN&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
=== MacroLogFeature.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed, instead FeatureSummary.cmake from CMake &amp;gt;= 2.8.6 has to be used, which has even more functionality.&lt;br /&gt;
Please have a look at the documentation of FeatureSummary.cmake on the cmake manpage.&lt;br /&gt;
&lt;br /&gt;
* macro_log_feature(&amp;lt;VAR&amp;gt; &amp;lt;FEATURE&amp;gt; &amp;lt;DESCRIPTION&amp;gt; &amp;lt;URL&amp;gt; &amp;lt;REQUIRED&amp;gt; &amp;lt;MIN_VERSION&amp;gt; &amp;lt;COMMENTS&amp;gt;) -&amp;gt; set_package_properties(FEATURE PROPERTIES DESCRIPTION &amp;lt;DESCRIPTION&amp;gt; URL &amp;lt;URL&amp;gt; TYPE (RUNTIME|OPTIONAL|RECOMMENDED|REQUIRED) PURPOSE &amp;quot;good for something&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* macro_display_feature_log() -&amp;gt; feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGE)&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalAddSubdirectory.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file is now part of the extra-cmake-modules package and thus has been renamed to ECMOptionalAddSubdirectory.cmake&lt;br /&gt;
&lt;br /&gt;
* include(MacroOptionalAddSubdirectory) -&amp;gt; include (ECMOptionalAddSubdirectory)&lt;br /&gt;
* macro_optional_add_subdirectory(...) -&amp;gt; ecm_optional_add_subdirectory(...)&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalDependPackage.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed, the purpose was broken.&lt;br /&gt;
&lt;br /&gt;
* include (MacroOptionalDependPackage) -&amp;gt; delete&lt;br /&gt;
* macro_optional_depend_package() -&amp;gt; delete&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalFindPackage.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore. Instead, starting with CMake 2.8.6, every find_package() call which is not REQUIRED can be disabled by setting the variable CMAKE_DISABLE_FIND_PACKAGE_&amp;lt;PackageName&amp;gt; to TRUE. This makes this macro unnecessary.&lt;br /&gt;
&lt;br /&gt;
* include(MacroFindPackage) -&amp;gt; delete&lt;br /&gt;
* macro_optional_find_package(Foo ...) -&amp;gt; find_package(Foo ... )&lt;br /&gt;
&lt;br /&gt;
=== MacroPushRequiredVars.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been merged into CMake, but has been renamed to CMakePushCheckState.cmake.&lt;br /&gt;
&lt;br /&gt;
* include(MacroPushRequiredVars) -&amp;gt; include(CMakePushCheckState)&lt;br /&gt;
* macro_push_required_vars() -&amp;gt; cmake_push_check_state()&lt;br /&gt;
* macro_pop_required_vars() -&amp;gt; cmake_pop_check_state()&lt;br /&gt;
&lt;br /&gt;
=== MacroWriteBasicCMakeVersionFile.cmake ===&lt;br /&gt;
&lt;br /&gt;
This macro has been merged into CMake, but has been renamed to WriteBasicConfigVersionFile.cmake, also the syntax changed slightly. To get exactly the same behaviour as with the old macro, do as shown below. For details see the documentation in the man page.&lt;br /&gt;
&lt;br /&gt;
* include(MacroWriteBasicCMakeVersionFile) -&amp;gt; include (WriteBasicConfigVersionFile)&lt;br /&gt;
* macro_write_basic_cmake_version_file(&amp;lt;outfilename&amp;gt; 1 2 3) -&amp;gt; write_basic_config_version_file(&amp;lt;outfilename&amp;gt; VERSION 1.2.3 COMPATIBILITY AnyNewerVersion )&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/ECM_SourceIncompatChanges</id>
		<title>Development/ECM SourceIncompatChanges</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/ECM_SourceIncompatChanges"/>
				<updated>2011-10-23T13:39:10Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== FindFLEX.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake now, which is named FindFlex.cmake (different casing !).&lt;br /&gt;
Beside that there should be no changes in behaviour.&lt;br /&gt;
&lt;br /&gt;
* find_package(FLEX) -&amp;gt; find_package(Flex)&lt;br /&gt;
&lt;br /&gt;
=== FindGIF.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake now.&lt;br /&gt;
There is a minor difference, which will not affect many systems. The KDE version accepted only giflib version 4, while the CMake version accepted any version of giflib. If giflib version 4 .x is required, the version can now be specified:&lt;br /&gt;
&lt;br /&gt;
* find_package(GIF) -&amp;gt; find_package(GIF 4 )&lt;br /&gt;
&lt;br /&gt;
This actually only was an issue on some relatively old Sun machines in 2006. Maybe today it is not even there a problem anymore.&lt;br /&gt;
&lt;br /&gt;
=== FindRUBY.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore, use FindRuby.cmake coming with CMake instead. Most variables are the same. Below are the changes:&lt;br /&gt;
&lt;br /&gt;
* find_package(RUBY) -&amp;gt; find_package(Ruby)&lt;br /&gt;
* RUBY_INCLUDE_PATH -&amp;gt; RUBY_INCLUDE_DIRS&lt;br /&gt;
&lt;br /&gt;
=== FindX11.cmake ===&lt;br /&gt;
&lt;br /&gt;
The following two variables have been removed, use the newer ones instead:&lt;br /&gt;
&lt;br /&gt;
* X11_Xss_FOUND -&amp;gt; X11_Xscreensaver_FOUND&lt;br /&gt;
* X11_Xss_LIB -&amp;gt; X11_Xscreensaver_LIB&lt;br /&gt;
&lt;br /&gt;
The following libraries are now not part of X11_LIBRARIES anymore, so they may have to be added to target_link_libraries() explicitely where needed:&lt;br /&gt;
&lt;br /&gt;
* X11_Xau_LIB&lt;br /&gt;
* X11_Xft_LIB&lt;br /&gt;
* X11_Xdmcp_LIB&lt;br /&gt;
* X11_Xpm_LIB&lt;br /&gt;
&lt;br /&gt;
=== MacroAddCompileFlags.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(.. APPEND_STRING) instead (new in CMake 2.8.6).&lt;br /&gt;
&lt;br /&gt;
* include(MacroAddCompileFlags) -&amp;gt; delete&lt;br /&gt;
* macro_add_compile_flags(target &amp;quot;-O2 -g&amp;quot;) -&amp;gt; set_property(TARGET target APPEND_STRING PROPERTY COMPILE_FLAGS &amp;quot; -O2 -g&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== MacroAddLinkFlags.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(.. APPEND_STRING) instead (new in CMake 2.8.6).&lt;br /&gt;
&lt;br /&gt;
* include(MacroAddLinkFlags) -&amp;gt; delete&lt;br /&gt;
* macro_add_link_flags(target &amp;quot;-no-rpath&amp;quot;) -&amp;gt; set_property(TARGET target APPEND_STRING PROPERTY LINK_FLAGS &amp;quot; -no-rpath&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== MacroAdditionalCleanFiles.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(... APPEND ...) instead.&lt;br /&gt;
&lt;br /&gt;
* include(MacroAdditionalCleanFiles) -&amp;gt; delete&lt;br /&gt;
* macro_additional_clean_files(file1 file2 fileN) -&amp;gt; set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES &amp;quot;file1;file2;fileN&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
=== MacroLogFeature.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed, instead FeatureSummary.cmake from CMake &amp;gt;= 2.8.6 has to be used, which has even more functionality.&lt;br /&gt;
Please have a look at the documentation of FeatureSummary.cmake on the cmake manpage.&lt;br /&gt;
&lt;br /&gt;
* macro_log_feature(&amp;lt;VAR&amp;gt; &amp;lt;FEATURE&amp;gt; &amp;lt;DESCRIPTION&amp;gt; &amp;lt;URL&amp;gt; &amp;lt;REQUIRED&amp;gt; &amp;lt;MIN_VERSION&amp;gt; &amp;lt;COMMENTS&amp;gt;) -&amp;gt; set_package_properties(FEATURE PROPERTIES DESCRIPTION &amp;lt;DESCRIPTION&amp;gt; URL &amp;lt;URL&amp;gt; TYPE (RUNTIME|OPTIONAL|RECOMMENDED|REQUIRED) PURPOSE &amp;quot;good for something&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* macro_display_feature_log() -&amp;gt; feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGE)&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalAddSubdirectory.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file is now part of the extra-cmake-modules package and thus has been renamed to ECMOptionalAddSubdirectory.cmake&lt;br /&gt;
&lt;br /&gt;
* include(MacroOptionalAddSubdirectory) -&amp;gt; include (ECMOptionalAddSubdirectory)&lt;br /&gt;
* macro_optional_add_subdirectory(...) -&amp;gt; ecm_optional_add_subdirectory(...)&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalDependPackage.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed, the purpose was broken.&lt;br /&gt;
&lt;br /&gt;
* include (MacroOptionalDependPackage) -&amp;gt; delete&lt;br /&gt;
* macro_optional_depend_package() -&amp;gt; delete&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalFindPackage.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore. Instead, starting with CMake 2.8.6, every find_package() call which is not REQUIRED can be disabled by setting the variable CMAKE_DISABLE_FIND_PACKAGE_&amp;lt;PackageName&amp;gt; to TRUE. This makes this macro unnecessary.&lt;br /&gt;
&lt;br /&gt;
* include(MacroFindPackage) -&amp;gt; delete&lt;br /&gt;
* macro_optional_find_package(Foo ...) -&amp;gt; find_package(Foo ... )&lt;br /&gt;
&lt;br /&gt;
=== MacroPushRequiredVars.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been merged into CMake, but has been renamed to CMakePushCheckState.cmake.&lt;br /&gt;
&lt;br /&gt;
* include(MacroPushRequiredVars) -&amp;gt; include(CMakePushCheckState)&lt;br /&gt;
* macro_push_required_vars() -&amp;gt; cmake_push_check_state()&lt;br /&gt;
* macro_pop_required_vars() -&amp;gt; cmake_pop_check_state()&lt;br /&gt;
&lt;br /&gt;
=== MacroWriteBasicCMakeVersionFile.cmake ===&lt;br /&gt;
&lt;br /&gt;
This macro has been merged into CMake, but has been renamed to WriteBasicConfigVersionFile.cmake, also the syntax changed slightly. To get exactly the same behaviour as with the old macro, do as shown below. For details see the documentation in the man page.&lt;br /&gt;
&lt;br /&gt;
* include(MacroWriteBasicCMakeVersionFile) -&amp;gt; include (WriteBasicConfigVersionFile)&lt;br /&gt;
* macro_write_basic_cmake_version_file(&amp;lt;outfilename&amp;gt; 1 2 3) -&amp;gt; write_basic_config_version_file(&amp;lt;outfilename&amp;gt; VERSION 1.2.3 COMPATIBILITY AnyNewerVersion )&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/ECM_SourceIncompatChanges</id>
		<title>Development/ECM SourceIncompatChanges</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/ECM_SourceIncompatChanges"/>
				<updated>2011-10-23T13:25:52Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== FindFLEX.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake now, which is named FindFlex.cmake (different casing !).&lt;br /&gt;
Beside that there should be no changes in behaviour.&lt;br /&gt;
&lt;br /&gt;
* find_package(FLEX) -&amp;gt; find_package(Flex)&lt;br /&gt;
&lt;br /&gt;
=== FindGIF.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake now.&lt;br /&gt;
There is a minor difference, which will not affect many systems. The KDE version accepted only giflib version 4, while the CMake version accepted any version of giflib. If giflib version 4 .x is required, the version can now be specified:&lt;br /&gt;
&lt;br /&gt;
* find_package(GIF) -&amp;gt; find_package(GIF 4 )&lt;br /&gt;
&lt;br /&gt;
This actually only was an issue on some relatively old Sun machines in 2006. Maybe today it is not even there a problem anymore.&lt;br /&gt;
&lt;br /&gt;
=== FindRUBY.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore, use FindRuby.cmake coming with CMake instead. Most variables are the same. Below are the changes:&lt;br /&gt;
&lt;br /&gt;
* find_package(RUBY) -&amp;gt; find_package(Ruby)&lt;br /&gt;
* RUBY_INCLUDE_PATH -&amp;gt; RUBY_INCLUDE_DIRS&lt;br /&gt;
&lt;br /&gt;
=== FindX11.cmake ===&lt;br /&gt;
&lt;br /&gt;
The following two variables have been removed, use the newer ones instead:&lt;br /&gt;
&lt;br /&gt;
* X11_Xss_FOUND -&amp;gt; X11_Xscreensaver_FOUND&lt;br /&gt;
* X11_Xss_LIB -&amp;gt; X11_Xscreensaver_LIB&lt;br /&gt;
&lt;br /&gt;
The following libraries are now not part of X11_LIBRARIES anymore, so they may have to be added to target_link_libraries() explicitely where needed:&lt;br /&gt;
&lt;br /&gt;
* X11_Xau_LIB&lt;br /&gt;
* X11_Xft_LIB&lt;br /&gt;
* X11_Xdmcp_LIB&lt;br /&gt;
* X11_Xpm_LIB&lt;br /&gt;
&lt;br /&gt;
=== MacroAddCompileFlags.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(.. APPEND_STRING) instead (new in CMake 2.8.6).&lt;br /&gt;
&lt;br /&gt;
* include(MacroAddCompileFlags) -&amp;gt; delete&lt;br /&gt;
* macro_add_compile_flags(target &amp;quot;-O2 -g&amp;quot;) -&amp;gt; set_property(TARGET target APPEND_STRING PROPERTY COMPILE_FLAGS &amp;quot; -O2 -g&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== MacroAddLinkFlags.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(.. APPEND_STRING) instead (new in CMake 2.8.6).&lt;br /&gt;
&lt;br /&gt;
* include(MacroAddLinkFlags) -&amp;gt; delete&lt;br /&gt;
* macro_add_link_flags(target &amp;quot;-no-rpath&amp;quot;) -&amp;gt; set_property(TARGET target APPEND_STRING PROPERTY LINK_FLAGS &amp;quot; -no-rpath&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== MacroAdditionalCleanFiles.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(... APPEND ...) instead.&lt;br /&gt;
&lt;br /&gt;
* include(MacroAdditionalCleanFiles) -&amp;gt; delete&lt;br /&gt;
* macro_additional_clean_files(file1 file2 fileN) -&amp;gt; set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES &amp;quot;file1;file2;fileN&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalAddSubdirectory.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file is now part of the extra-cmake-modules package and thus has been renamed to ECMOptionalAddSubdirectory.cmake&lt;br /&gt;
&lt;br /&gt;
* include(MacroOptionalAddSubdirectory) -&amp;gt; include (ECMOptionalAddSubdirectory)&lt;br /&gt;
* macro_optional_add_subdirectory(...) -&amp;gt; ecm_optional_add_subdirectory(...)&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalDependPackage.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed, the purpose was broken.&lt;br /&gt;
&lt;br /&gt;
* include (MacroOptionalDependPackage) -&amp;gt; delete&lt;br /&gt;
* macro_optional_depend_package() -&amp;gt; delete&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalFindPackage.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore. Instead, starting with CMake 2.8.6, every find_package() call which is not REQUIRED can be disabled by setting the variable CMAKE_DISABLE_FIND_PACKAGE_&amp;lt;PackageName&amp;gt; to TRUE. This makes this macro unnecessary.&lt;br /&gt;
&lt;br /&gt;
* include(MacroFindPackage) -&amp;gt; delete&lt;br /&gt;
* macro_optional_find_package(Foo ...) -&amp;gt; find_package(Foo ... )&lt;br /&gt;
&lt;br /&gt;
=== MacroPushRequiredVars.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been merged into CMake, but has been renamed to CMakePushCheckState.cmake.&lt;br /&gt;
&lt;br /&gt;
* include(MacroPushRequiredVars) -&amp;gt; include(CMakePushCheckState)&lt;br /&gt;
* macro_push_required_vars() -&amp;gt; cmake_push_check_state()&lt;br /&gt;
* macro_pop_required_vars() -&amp;gt; cmake_pop_check_state()&lt;br /&gt;
&lt;br /&gt;
=== MacroWriteBasicCMakeVersionFile.cmake ===&lt;br /&gt;
&lt;br /&gt;
This macro has been merged into CMake, but has been renamed to WriteBasicConfigVersionFile.cmake, also the syntax changed slightly. To get exactly the same behaviour as with the old macro, do as shown below. For details see the documentation in the man page.&lt;br /&gt;
&lt;br /&gt;
* include(MacroWriteBasicCMakeVersionFile) -&amp;gt; include (WriteBasicConfigVersionFile)&lt;br /&gt;
* macro_write_basic_cmake_version_file(&amp;lt;outfilename&amp;gt; 1 2 3) -&amp;gt; write_basic_config_version_file(&amp;lt;outfilename&amp;gt; VERSION 1.2.3 COMPATIBILITY AnyNewerVersion )&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Policies/CMake_Coding_Style</id>
		<title>Policies/CMake Coding Style</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Policies/CMake_Coding_Style"/>
				<updated>2011-08-22T23:19:00Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document describes the recommended coding style for CMake files in KDE, i.e. CMakeLists.txt files and *.cmake files.&lt;br /&gt;
&lt;br /&gt;
==Indentation==&lt;br /&gt;
&lt;br /&gt;
Indent all code correctly, i.e. the body of &lt;br /&gt;
* IF/ELSE/ENDIF&lt;br /&gt;
* FOREACH/ENDFOREACH&lt;br /&gt;
* WHILE/ENDWHILE&lt;br /&gt;
* MACRO/ENDMACRO&lt;br /&gt;
* FUNCTION/ENDFUNCTION (CMake 2.6)&lt;br /&gt;
&lt;br /&gt;
Use spaces for indenting, 2, 3 or 4 spaces preferably. Use the same amount&lt;br /&gt;
of spaces for indenting as is used in the rest of the file.&lt;br /&gt;
&lt;br /&gt;
==Upper/lower casing==&lt;br /&gt;
&lt;br /&gt;
CMake commands are case-insensitive (only the commands, not the arguments or variable names). So all the following versions work:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
add_executable(foo foo.c)&lt;br /&gt;
ADD_EXECUTABLE(bar bar.c)&lt;br /&gt;
Add_Executable(hello hello.c)&lt;br /&gt;
aDd_ExEcUtAbLe(blub blub.c)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But this would be ugly.&lt;br /&gt;
&lt;br /&gt;
In KDE the ''all-lowercase style is preferred''. The all-uppercase style is also ok. Mixing upper- and lowercase should not be done in KDE CMake files.&lt;br /&gt;
Although all-lowercase is preferred, if a file is apparently in all-uppercase style, then stay consistent and also use all-uppercase in this file.&lt;br /&gt;
&lt;br /&gt;
==(Not) Using pkg-config==&lt;br /&gt;
&lt;br /&gt;
You are free to use pkg-config in FindXXX.cmake modules, as long as the following conditions are met:&lt;br /&gt;
* the FindXXX.cmake must also work without pkg-config, as long as the package is either installed to one of the default locations (as /usr or /usr/local) or if CMAKE_PREFIX_PATH is set accordingly&lt;br /&gt;
* use only FIND_PACKAGE(PkgConfig), don't use INCLUDE(UsePkgConfig), this one is deprecated&lt;br /&gt;
* make sure the variables created by PKG_CHECK_MODULES() are all prefixed with &amp;quot;PC_&amp;quot;, so they don't mix up with other variables, e.g. set via FIND_PATH() etc.&lt;br /&gt;
* FindLibXml2.cmake as shipped with CMake 2.8.5 is a good example how pkg-config should be handled&lt;br /&gt;
* putting something like if(NOT WIN32) around the pkg-config stuff is not necessary (and should be removed if it is somewhere). If pkg-config is not found, e.g. on Windows, the macros simply do nothing.&lt;br /&gt;
&lt;br /&gt;
==Writing CMake Find-modules==&lt;br /&gt;
&lt;br /&gt;
* Follow the style guide from CMake when writing some FindFoo.cmake module: &lt;br /&gt;
[http://www.cmake.org/cgi-bin/viewcvs.cgi/Modules/readme.txt?root=CMake&amp;amp;view=markup readme.txt]&lt;br /&gt;
&lt;br /&gt;
* For checking the results inside the Find-module, the macro find_package_handle_standard_args() (coming with CMake) should be used, using the new extended syntax, which supports also version checking.&lt;br /&gt;
&lt;br /&gt;
* Micro-optimizations like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if(FOO_LIBRARY AND FOO_INCLUDE_DIR)&lt;br /&gt;
  set(FOO_FOUND TRUE)&lt;br /&gt;
else()&lt;br /&gt;
  ... execute the whole find-logic&lt;br /&gt;
endif()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
should be removed, the find-logic should be executed always. These shortcuts can cause problems e.g. when the same file is used from multiple directories but e.g. with different required versions or components etc.&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/ECM_SourceIncompatChanges</id>
		<title>Development/ECM SourceIncompatChanges</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/ECM_SourceIncompatChanges"/>
				<updated>2011-08-16T22:18:12Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== FindGIF.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake now.&lt;br /&gt;
There is a minor difference, which will not affect many systems. The KDE version accepted only giflib version 4, while the CMake version accepted any version of giflib. If giflib version 4 .x is required, the version can now be specified:&lt;br /&gt;
&lt;br /&gt;
* find_package(GIF) -&amp;gt; find_package(GIF 4 )&lt;br /&gt;
&lt;br /&gt;
This actually only was an issue on some relatively old Sun machines in 2006. Maybe today it is not even there a problem anymore.&lt;br /&gt;
&lt;br /&gt;
=== FindRUBY.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore, use FindRuby.cmake coming with CMake instead. Most variables are the same. Below are the changes:&lt;br /&gt;
&lt;br /&gt;
* find_package(RUBY) -&amp;gt; find_package(Ruby)&lt;br /&gt;
* RUBY_INCLUDE_PATH -&amp;gt; RUBY_INCLUDE_DIRS&lt;br /&gt;
&lt;br /&gt;
=== FindX11.cmake ===&lt;br /&gt;
&lt;br /&gt;
The following two variables have been removed, use the newer ones instead:&lt;br /&gt;
&lt;br /&gt;
* X11_Xss_FOUND -&amp;gt; X11_Xscreensaver_FOUND&lt;br /&gt;
* X11_Xss_LIB -&amp;gt; X11_Xscreensaver_LIB&lt;br /&gt;
&lt;br /&gt;
The following libraries are now not part of X11_LIBRARIES anymore, so they may have to be added to target_link_libraries() explicitely where needed:&lt;br /&gt;
&lt;br /&gt;
* X11_Xau_LIB&lt;br /&gt;
* X11_Xft_LIB&lt;br /&gt;
* X11_Xdmcp_LIB&lt;br /&gt;
* X11_Xpm_LIB&lt;br /&gt;
&lt;br /&gt;
=== MacroAddCompileFlags.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(.. APPEND_STRING) instead (new in CMake 2.8.6).&lt;br /&gt;
&lt;br /&gt;
* include(MacroAddCompileFlags) -&amp;gt; delete&lt;br /&gt;
* macro_add_compile_flags(target &amp;quot;-O2 -g&amp;quot;) -&amp;gt; set_property(TARGET target APPEND_STRING PROPERTY COMPILE_FLAGS &amp;quot; -O2 -g&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== MacroAddLinkFlags.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(.. APPEND_STRING) instead (new in CMake 2.8.6).&lt;br /&gt;
&lt;br /&gt;
* include(MacroAddLinkFlags) -&amp;gt; delete&lt;br /&gt;
* macro_add_link_flags(target &amp;quot;-no-rpath&amp;quot;) -&amp;gt; set_property(TARGET target APPEND_STRING PROPERTY LINK_FLAGS &amp;quot; -no-rpath&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== MacroAdditionalCleanFiles.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(... APPEND ...) instead.&lt;br /&gt;
&lt;br /&gt;
* include(MacroAdditionalCleanFiles) -&amp;gt; delete&lt;br /&gt;
* macro_additional_clean_files(file1 file2 fileN) -&amp;gt; set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES &amp;quot;file1;file2;fileN&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalAddSubdirectory.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file is now part of the extra-cmake-modules package and thus has been renamed to ECMOptionalAddSubdirectory.cmake&lt;br /&gt;
&lt;br /&gt;
* include(MacroOptionalAddSubdirectory) -&amp;gt; include (ECMOptionalAddSubdirectory)&lt;br /&gt;
* macro_optional_add_subdirectory(...) -&amp;gt; ecm_optional_add_subdirectory(...)&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalDependPackage.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed, the purpose was broken.&lt;br /&gt;
&lt;br /&gt;
* include (MacroOptionalDependPackage) -&amp;gt; delete&lt;br /&gt;
* macro_optional_depend_package() -&amp;gt; delete&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalFindPackage.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore. Instead, starting with CMake 2.8.6, every find_package() call which is not REQUIRED can be disabled by setting the variable CMAKE_DISABLE_FIND_PACKAGE_&amp;lt;PackageName&amp;gt; to TRUE. This makes this macro unnecessary.&lt;br /&gt;
&lt;br /&gt;
* include(MacroFindPackage) -&amp;gt; delete&lt;br /&gt;
* macro_optional_find_package(Foo ...) -&amp;gt; find_package(Foo ... )&lt;br /&gt;
&lt;br /&gt;
=== MacroPushRequiredVars.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been merged into CMake, but has been renamed to CMakePushCheckState.cmake.&lt;br /&gt;
&lt;br /&gt;
* include(MacroPushRequiredVars) -&amp;gt; include(CMakePushCheckState)&lt;br /&gt;
* macro_push_required_vars() -&amp;gt; cmake_push_check_state()&lt;br /&gt;
* macro_pop_required_vars() -&amp;gt; cmake_pop_check_state()&lt;br /&gt;
&lt;br /&gt;
=== MacroWriteBasicCMakeVersionFile.cmake ===&lt;br /&gt;
&lt;br /&gt;
This macro has been merged into CMake, but has been renamed to WriteBasicConfigVersionFile.cmake, also the syntax changed slightly. To get exactly the same behaviour as with the old macro, do as shown below. For details see the documentation in the man page.&lt;br /&gt;
&lt;br /&gt;
* include(MacroWriteBasicCMakeVersionFile) -&amp;gt; include (WriteBasicConfigVersionFile)&lt;br /&gt;
* macro_write_basic_cmake_version_file(&amp;lt;outfilename&amp;gt; 1 2 3) -&amp;gt; write_basic_config_version_file(&amp;lt;outfilename&amp;gt; VERSION 1.2.3 COMPATIBILITY AnyNewerVersion )&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/ECM_SourceIncompatChanges</id>
		<title>Development/ECM SourceIncompatChanges</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/ECM_SourceIncompatChanges"/>
				<updated>2011-08-03T20:43:32Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== FindGIF.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake now.&lt;br /&gt;
There is a minor difference, which will not affect many systems. The KDE version accepted only giflib version 4, while the CMake version accepted any version of giflib. If giflib version 4 .x is required, the version can now be specified:&lt;br /&gt;
&lt;br /&gt;
* find_package(GIF) -&amp;gt; find_package(GIF 4 )&lt;br /&gt;
&lt;br /&gt;
This actually only was an issue on some relatively old Sun machines in 2006. Maybe today it is not even there a problem anymore.&lt;br /&gt;
&lt;br /&gt;
=== FindRUBY.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore, use FindRuby.cmake coming with CMake instead. Most variables are the same. Below are the changes:&lt;br /&gt;
&lt;br /&gt;
* find_package(RUBY) -&amp;gt; find_package(Ruby)&lt;br /&gt;
* RUBY_INCLUDE_PATH -&amp;gt; RUBY_INCLUDE_DIRS&lt;br /&gt;
&lt;br /&gt;
=== FindX11.cmake ===&lt;br /&gt;
&lt;br /&gt;
The following two variables have been removed, use the newer ones instead:&lt;br /&gt;
&lt;br /&gt;
* X11_Xss_FOUND -&amp;gt; X11_Xscreensaver_FOUND&lt;br /&gt;
* X11_Xss_LIB -&amp;gt; X11_Xscreensaver_LIB&lt;br /&gt;
&lt;br /&gt;
The following libraries are now not part of X11_LIBRARIES anymore, so they may have to be added to target_link_libraries() explicitely where needed:&lt;br /&gt;
&lt;br /&gt;
* X11_Xau_LIB&lt;br /&gt;
* X11_Xft_LIB&lt;br /&gt;
* X11_Xdmcp_LIB&lt;br /&gt;
* X11_Xpm_LIB&lt;br /&gt;
&lt;br /&gt;
=== MacroAddCompileFlags.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(.. APPEND_STRING) instead (new in CMake 2.8.6).&lt;br /&gt;
&lt;br /&gt;
* include(MacroAddCompileFlags) -&amp;gt; delete&lt;br /&gt;
* macro_add_compile_flags(target &amp;quot;-O2 -g&amp;quot;) -&amp;gt; set_property(TARGET target APPEND_STRING PROPERTY COMPILE_FLAGS &amp;quot; -O2 -g&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== MacroAddLinkFlags.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(.. APPEND_STRING) instead (new in CMake 2.8.6).&lt;br /&gt;
&lt;br /&gt;
* include(MacroAddLinkFlags) -&amp;gt; delete&lt;br /&gt;
* macro_add_link_flags(target &amp;quot;-no-rpath&amp;quot;) -&amp;gt; set_property(TARGET target APPEND_STRING PROPERTY LINK_FLAGS &amp;quot; -no-rpath&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== MacroAdditionalCleanFiles.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(... APPEND ...) instead.&lt;br /&gt;
&lt;br /&gt;
* include(MacroAdditionalCleanFiles) -&amp;gt; delete&lt;br /&gt;
* macro_additional_clean_files(file1 file2 fileN) -&amp;gt; set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES &amp;quot;file1;file2;fileN&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalAddSubdirectory.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file is now part of the extra-cmake-modules package and thus has been renamed to ECMOptionalAddSubdirectory.cmake&lt;br /&gt;
&lt;br /&gt;
* include(MacroOptionalAddSubdirectory) -&amp;gt; include (ECMOptionalAddSubdirectory)&lt;br /&gt;
* macro_optional_add_subdirectory(...) -&amp;gt; ecm_optional_add_subdirectory(...)&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalDependPackage.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed, the purpose was broken.&lt;br /&gt;
&lt;br /&gt;
* include (MacroOptionalDependPackage) -&amp;gt; delete&lt;br /&gt;
* macro_optional_depend_package() -&amp;gt; delete&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalFindPackage.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore. Instead, starting with CMake 2.8.6, every find_package() call which is not REQUIRED can be disabled by setting the variable CMAKE_DISABLE_FIND_PACKAGE_&amp;lt;PackageName&amp;gt; to TRUE. This makes this macro unnecessary.&lt;br /&gt;
&lt;br /&gt;
* include(MacroFindPackage) -&amp;gt; delete&lt;br /&gt;
* macro_optional_find_package(Foo ...) -&amp;gt; find_package(Foo ... )&lt;br /&gt;
&lt;br /&gt;
=== MacroPushRequiredVars.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been merged into CMake, but has been renamed to CMakePushCheckState.cmake.&lt;br /&gt;
&lt;br /&gt;
* include(MacroPushRequiredVars) -&amp;gt; include(CMakePushCheckState)&lt;br /&gt;
* macro_push_required_vars() -&amp;gt; cmake_push_check_state()&lt;br /&gt;
* macro_pop_required_vars() -&amp;gt; cmake_pop_check_state()&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/ECM_SourceIncompatChanges</id>
		<title>Development/ECM SourceIncompatChanges</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/ECM_SourceIncompatChanges"/>
				<updated>2011-08-02T20:19:00Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== FindGIF.cmake ===&lt;br /&gt;
&lt;br /&gt;
We use the version from CMake now.&lt;br /&gt;
There is a minor difference, which will not affect many systems. The KDE version accepted only giflib version 4, while the CMake version accepted any version of giflib. If giflib version 4 .x is required, the version can now be specified:&lt;br /&gt;
&lt;br /&gt;
* find_package(GIF) -&amp;gt; find_package(GIF 4 )&lt;br /&gt;
&lt;br /&gt;
This actually only was an issue on some relatively old Sun machines in 2006. Maybe today it is not even there a problem anymore.&lt;br /&gt;
&lt;br /&gt;
=== FindRUBY.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore, use FindRuby.cmake coming with CMake instead. Most variables are the same. Below are the changes:&lt;br /&gt;
&lt;br /&gt;
* find_package(RUBY) -&amp;gt; find_package(Ruby)&lt;br /&gt;
* RUBY_INCLUDE_PATH -&amp;gt; RUBY_INCLUDE_DIRS&lt;br /&gt;
&lt;br /&gt;
=== MacroAddCompileFlags.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(.. APPEND_STRING) instead (new in CMake 2.8.6).&lt;br /&gt;
&lt;br /&gt;
* include(MacroAddCompileFlags) -&amp;gt; delete&lt;br /&gt;
* macro_add_compile_flags(target &amp;quot;-O2 -g&amp;quot;) -&amp;gt; set_property(TARGET target APPEND_STRING PROPERTY COMPILE_FLAGS &amp;quot; -O2 -g&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== MacroAddLinkFlags.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(.. APPEND_STRING) instead (new in CMake 2.8.6).&lt;br /&gt;
&lt;br /&gt;
* include(MacroAddLinkFlags) -&amp;gt; delete&lt;br /&gt;
* macro_add_link_flags(target &amp;quot;-no-rpath&amp;quot;) -&amp;gt; set_property(TARGET target APPEND_STRING PROPERTY LINK_FLAGS &amp;quot; -no-rpath&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== MacroAdditionalCleanFiles.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(... APPEND ...) instead.&lt;br /&gt;
&lt;br /&gt;
* include(MacroAdditionalCleanFiles) -&amp;gt; delete&lt;br /&gt;
* macro_additional_clean_files(file1 file2 fileN) -&amp;gt; set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES &amp;quot;file1;file2;fileN&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalAddSubdirectory.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file is now part of the extra-cmake-modules package and thus has been renamed to ECMOptionalAddSubdirectory.cmake&lt;br /&gt;
&lt;br /&gt;
* include(MacroOptionalAddSubdirectory) -&amp;gt; include (ECMOptionalAddSubdirectory)&lt;br /&gt;
* macro_optional_add_subdirectory(...) -&amp;gt; ecm_optional_add_subdirectory(...)&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalDependPackage.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed, the purpose was broken.&lt;br /&gt;
&lt;br /&gt;
* include (MacroOptionalDependPackage) -&amp;gt; delete&lt;br /&gt;
* macro_optional_depend_package() -&amp;gt; delete&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalFindPackage.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore. Instead, starting with CMake 2.8.6, every find_package() call which is not REQUIRED can be disabled by setting the variable CMAKE_DISABLE_FIND_PACKAGE_&amp;lt;PackageName&amp;gt; to TRUE. This makes this macro unnecessary.&lt;br /&gt;
&lt;br /&gt;
* include(MacroFindPackage) -&amp;gt; delete&lt;br /&gt;
* macro_optional_find_package(Foo ...) -&amp;gt; find_package(Foo ... )&lt;br /&gt;
&lt;br /&gt;
=== MacroPushRequiredVars.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been merged into CMake, but has been renamed to CMakePushCheckState.cmake.&lt;br /&gt;
&lt;br /&gt;
* include(MacroPushRequiredVars) -&amp;gt; include(CMakePushCheckState)&lt;br /&gt;
* macro_push_required_vars() -&amp;gt; cmake_push_check_state()&lt;br /&gt;
* macro_pop_required_vars() -&amp;gt; cmake_pop_check_state()&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/ECM_SourceIncompatChanges</id>
		<title>Development/ECM SourceIncompatChanges</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/ECM_SourceIncompatChanges"/>
				<updated>2011-07-26T19:24:58Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== FindRUBY.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore, use FindRuby.cmake coming with CMake instead. Most variables are the same. Below are the changes:&lt;br /&gt;
&lt;br /&gt;
* find_package(RUBY) -&amp;gt; find_package(Ruby)&lt;br /&gt;
* RUBY_INCLUDE_PATH -&amp;gt; RUBY_INCLUDE_DIRS&lt;br /&gt;
&lt;br /&gt;
=== MacroAddCompileFlags.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(.. APPEND_STRING) instead (new in CMake 2.8.6).&lt;br /&gt;
&lt;br /&gt;
* include(MacroAddCompileFlags) -&amp;gt; delete&lt;br /&gt;
* macro_add_compile_flags(target &amp;quot;-O2 -g&amp;quot;) -&amp;gt; set_property(TARGET target APPEND_STRING PROPERTY COMPILE_FLAGS &amp;quot; -O2 -g&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== MacroAddLinkFlags.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(.. APPEND_STRING) instead (new in CMake 2.8.6).&lt;br /&gt;
&lt;br /&gt;
* include(MacroAddLinkFlags) -&amp;gt; delete&lt;br /&gt;
* macro_add_link_flags(target &amp;quot;-no-rpath&amp;quot;) -&amp;gt; set_property(TARGET target APPEND_STRING PROPERTY LINK_FLAGS &amp;quot; -no-rpath&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== MacroAdditionalCleanFiles.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(... APPEND ...) instead.&lt;br /&gt;
&lt;br /&gt;
* include(MacroAdditionalCleanFiles) -&amp;gt; delete&lt;br /&gt;
* macro_additional_clean_files(file1 file2 fileN) -&amp;gt; set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES &amp;quot;file1;file2;fileN&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalAddSubdirectory.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file is now part of the extra-cmake-modules package and thus has been renamed to ECMOptionalAddSubdirectory.cmake&lt;br /&gt;
&lt;br /&gt;
* include(MacroOptionalAddSubdirectory) -&amp;gt; include (ECMOptionalAddSubdirectory)&lt;br /&gt;
* macro_optional_add_subdirectory(...) -&amp;gt; ecm_optional_add_subdirectory(...)&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalDependPackage.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed, the purpose was broken.&lt;br /&gt;
&lt;br /&gt;
* include (MacroOptionalDependPackage) -&amp;gt; delete&lt;br /&gt;
* macro_optional_depend_package() -&amp;gt; delete&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalFindPackage.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore. Instead, starting with CMake 2.8.6, every find_package() call which is not REQUIRED can be disabled by setting the variable CMAKE_DISABLE_FIND_PACKAGE_&amp;lt;PackageName&amp;gt; to TRUE. This makes this macro unnecessary.&lt;br /&gt;
&lt;br /&gt;
* include(MacroFindPackage) -&amp;gt; delete&lt;br /&gt;
* macro_optional_find_package(Foo ...) -&amp;gt; find_package(Foo ... )&lt;br /&gt;
&lt;br /&gt;
=== MacroPushRequiredVars.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been merged into CMake, but has been renamed to CMakePushCheckState.cmake.&lt;br /&gt;
&lt;br /&gt;
* include(MacroPushRequiredVars) -&amp;gt; include(CMakePushCheckState)&lt;br /&gt;
* macro_push_required_vars() -&amp;gt; cmake_push_check_state()&lt;br /&gt;
* macro_pop_required_vars() -&amp;gt; cmake_pop_check_state()&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/ECM_SourceIncompatChanges</id>
		<title>Development/ECM SourceIncompatChanges</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/ECM_SourceIncompatChanges"/>
				<updated>2011-07-10T18:21:58Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== FindRUBY.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore, use FindRuby.cmake coming with CMake instead. Most variables are the same. Below are the changes:&lt;br /&gt;
&lt;br /&gt;
* find_package(RUBY) -&amp;gt; find_package(Ruby)&lt;br /&gt;
* RUBY_INCLUDE_PATH -&amp;gt; RUBY_INCLUDE_DIRS&lt;br /&gt;
&lt;br /&gt;
=== MacroAdditionalCleanFiles.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed. Use set_property(... APPEND ...) instead.&lt;br /&gt;
&lt;br /&gt;
* include(MacroAdditionalCleanFiles) -&amp;gt; delete&lt;br /&gt;
* macro_additional_clean_files(file1 file2 fileN) -&amp;gt; set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES &amp;quot;file1;file2;fileN&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalAddSubdirectory.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file is now part of the extra-cmake-modules package and thus has been renamed to ECMOptionalAddSubdirectory.cmake&lt;br /&gt;
&lt;br /&gt;
* include(MacroOptionalAddSubdirectory) -&amp;gt; include (ECMOptionalAddSubdirectory)&lt;br /&gt;
* macro_optional_add_subdirectory(...) -&amp;gt; ecm_optional_add_subdirectory(...)&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalDependPackage.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed, the purpose was broken.&lt;br /&gt;
&lt;br /&gt;
* include (MacroOptionalDependPackage) -&amp;gt; delete&lt;br /&gt;
* macro_optional_depend_package() -&amp;gt; delete&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalFindPackage.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore. Instead, starting with CMake 2.8.6, every find_package() call which is not REQUIRED can be disabled by setting the variable CMAKE_DISABLE_FIND_PACKAGE_&amp;lt;PackageName&amp;gt; to TRUE. This makes this macro unnecessary.&lt;br /&gt;
&lt;br /&gt;
* include(MacroFindPackage) -&amp;gt; delete&lt;br /&gt;
* macro_optional_find_package(Foo ...) -&amp;gt; find_package(Foo ... )&lt;br /&gt;
&lt;br /&gt;
=== MacroPushRequiredVars.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been merged into CMake, but has been renamed to CMakePushCheckState.cmake.&lt;br /&gt;
&lt;br /&gt;
* include(MacroPushRequiredVars) -&amp;gt; include(CMakePushCheckState)&lt;br /&gt;
* macro_push_required_vars() -&amp;gt; cmake_push_check_state()&lt;br /&gt;
* macro_pop_required_vars() -&amp;gt; cmake_pop_check_state()&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/ECM_SourceIncompatChanges</id>
		<title>Development/ECM SourceIncompatChanges</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/ECM_SourceIncompatChanges"/>
				<updated>2011-07-10T18:13:51Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== FindRUBY.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore, use FindRuby.cmake coming with CMake instead. Most variables are the same. Below are the changes:&lt;br /&gt;
&lt;br /&gt;
* find_package(RUBY) -&amp;gt; find_package(Ruby)&lt;br /&gt;
* RUBY_INCLUDE_PATH -&amp;gt; RUBY_INCLUDE_DIRS&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalAddSubdirectory.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file is now part of the extra-cmake-modules package and thus has been renamed to ECMOptionalAddSubdirectory.cmake&lt;br /&gt;
&lt;br /&gt;
* include(MacroOptionalAddSubdirectory) -&amp;gt; include (ECMOptionalAddSubdirectory)&lt;br /&gt;
* macro_optional_add_subdirectory(...) -&amp;gt; ecm_optional_add_subdirectory(...)&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalDependPackage.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been removed, the purpose was broken.&lt;br /&gt;
&lt;br /&gt;
* include (MacroOptionalDependPackage) -&amp;gt; delete&lt;br /&gt;
* macro_optional_depend_package() -&amp;gt; delete&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalFindPackage.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore. Instead, starting with CMake 2.8.6, every find_package() call which is not REQUIRED can be disabled by setting the variable CMAKE_DISABLE_FIND_PACKAGE_&amp;lt;PackageName&amp;gt; to TRUE. This makes this macro unnecessary.&lt;br /&gt;
&lt;br /&gt;
* include(MacroFindPackage) -&amp;gt; delete&lt;br /&gt;
* macro_optional_find_package(Foo ...) -&amp;gt; find_package(Foo ... )&lt;br /&gt;
&lt;br /&gt;
=== MacroPushRequiredVars.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been merged into CMake, but has been renamed to CMakePushCheckState.cmake.&lt;br /&gt;
&lt;br /&gt;
* include(MacroPushRequiredVars) -&amp;gt; include(CMakePushCheckState)&lt;br /&gt;
* macro_push_required_vars() -&amp;gt; cmake_push_check_state()&lt;br /&gt;
* macro_pop_required_vars() -&amp;gt; cmake_pop_check_state()&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/ECM_SourceIncompatChanges</id>
		<title>Development/ECM SourceIncompatChanges</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/ECM_SourceIncompatChanges"/>
				<updated>2011-07-09T17:07:52Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== FindRUBY.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore, use FindRuby.cmake coming with CMake instead. Most variables are the same. Below are the changes:&lt;br /&gt;
&lt;br /&gt;
* find_package(RUBY) -&amp;gt; find_package(Ruby)&lt;br /&gt;
* RUBY_INCLUDE_PATH -&amp;gt; RUBY_INCLUDE_DIRS&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalAddSubdirectory.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file is now part of the extra-cmake-modules package and thus has been renamed to ECMOptionalAddSubdirectory.cmake&lt;br /&gt;
&lt;br /&gt;
* include(MacroOptionalAddSubdirectory) -&amp;gt; include (ECMOptionalAddSubdirectory)&lt;br /&gt;
* macro_optional_add_subdirectory(...) -&amp;gt; ecm_optional_add_subdirectory(...)&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalFindPackage.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore. Instead, starting with CMake 2.8.6, every find_package() call which is not REQUIRED can be disabled by setting the variable CMAKE_DISABLE_FIND_PACKAGE_&amp;lt;PackageName&amp;gt; to TRUE. This makes this macro unnecessary.&lt;br /&gt;
&lt;br /&gt;
* include(MacroFindPackage) -&amp;gt; delete&lt;br /&gt;
* macro_optional_find_package(Foo ...) -&amp;gt; find_package(Foo ... )&lt;br /&gt;
&lt;br /&gt;
=== MacroPushRequiredVars.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been merged into CMake, but has been renamed to CMakePushCheckState.cmake.&lt;br /&gt;
&lt;br /&gt;
* include(MacroPushRequiredVars) -&amp;gt; include(CMakePushCheckState)&lt;br /&gt;
* macro_push_required_vars() -&amp;gt; cmake_push_check_state()&lt;br /&gt;
* macro_pop_required_vars() -&amp;gt; cmake_pop_check_state()&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/ECM_SourceIncompatChanges</id>
		<title>Development/ECM SourceIncompatChanges</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/ECM_SourceIncompatChanges"/>
				<updated>2011-07-08T19:55:38Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== FindRUBY.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore, use FindRuby.cmake coming with CMake instead. Most variables are the same. Below are the changes:&lt;br /&gt;
&lt;br /&gt;
* find_package(RUBY) -&amp;gt; find_package(Ruby)&lt;br /&gt;
* RUBY_INCLUDE_PATH -&amp;gt; RUBY_INCLUDE_DIRS&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalFindPackage.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore. Instead, starting with CMake 2.8.6, every find_package() call which is not REQUIRED can be disabled by setting the variable CMAKE_DISABLE_FIND_PACKAGE_&amp;lt;PackageName&amp;gt; to TRUE. This makes this macro unnecessary.&lt;br /&gt;
&lt;br /&gt;
* include(MacroFindPackage) -&amp;gt; delete&lt;br /&gt;
* macro_optional_find_package(Foo ...) -&amp;gt; find_package(Foo ... )&lt;br /&gt;
&lt;br /&gt;
=== MacroPushRequiredVars.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file has been merged into CMake, but has been renamed to CMakePushCheckState.cmake.&lt;br /&gt;
&lt;br /&gt;
* include(MacroPushRequiredVars) -&amp;gt; include(CMakePushCheckState)&lt;br /&gt;
* macro_push_required_vars() -&amp;gt; cmake_push_check_state()&lt;br /&gt;
* macro_pop_required_vars() -&amp;gt; cmake_pop_check_state()&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/ECM_SourceIncompatChanges</id>
		<title>Development/ECM SourceIncompatChanges</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/ECM_SourceIncompatChanges"/>
				<updated>2011-07-08T19:52:16Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== FindRUBY.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore, use FindRuby.cmake coming with CMake instead. Most variables are the same. Below are the changes:&lt;br /&gt;
&lt;br /&gt;
* find_package(RUBY) -&amp;gt; find_package(Ruby)&lt;br /&gt;
* RUBY_INCLUDE_PATH -&amp;gt; RUBY_INCLUDE_DIRS&lt;br /&gt;
&lt;br /&gt;
=== MacroOptionalFindPackage.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore. Instead, starting with CMake 2.8.6, every find_package() call which is not REQUIRED can be disabled by setting the variable CMAKE_DISABLE_FIND_PACKAGE_&amp;lt;PackageName&amp;gt; to TRUE. This makes this macro unnecessary.&lt;br /&gt;
&lt;br /&gt;
* include(MacroFindPackage) -&amp;gt; delete&lt;br /&gt;
* macro_optional_find_package(Foo ...) -&amp;gt; find_package(Foo ... )&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/ECM_SourceIncompatChanges</id>
		<title>Development/ECM SourceIncompatChanges</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/ECM_SourceIncompatChanges"/>
				<updated>2011-07-08T19:50:01Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: Created page with &amp;quot;=== FindRUBY.cmake ===  This file does not exist anymore, use FindRuby.cmake coming with CMake instead. Most variables are the same. Below are the changes:  * find_package(RUBY) ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== FindRUBY.cmake ===&lt;br /&gt;
&lt;br /&gt;
This file does not exist anymore, use FindRuby.cmake coming with CMake instead. Most variables are the same. Below are the changes:&lt;br /&gt;
&lt;br /&gt;
* find_package(RUBY) -&amp;gt; find_package(Ruby)&lt;br /&gt;
* RUBY_INCLUDE_PATH -&amp;gt; RUBY_INCLUDE_DIRS&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/CMake</id>
		<title>Development/CMake</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/CMake"/>
				<updated>2011-07-08T19:47:31Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Development/CMake}}&lt;br /&gt;
&lt;br /&gt;
This is the central directory of all [http://www.cmake.org CMake]-related pages on TechBase.&lt;br /&gt;
&lt;br /&gt;
== KDE4 Specific CMake Documentation==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/CMake|CMake tutorial]]&lt;br /&gt;
:''An introduction to using CMake for KDE4''&lt;br /&gt;
&lt;br /&gt;
;[[Development/CMake_FAQ|KDE's CMake FAQ]]&lt;br /&gt;
:''Some Frequently Asked Questions''&lt;br /&gt;
&lt;br /&gt;
;[http://api.kde.org/cmake/modules.html KDE CMake modules API]&lt;br /&gt;
:''Documentation for all CMake modules in kdelibs (generated from kdelibs svn)''&lt;br /&gt;
&lt;br /&gt;
;[[Development/CMake/DashboardBuilds|Nightly dashboard builds for KDE]]&lt;br /&gt;
: ''Describes the quality dashboard for KDE and how to set up Nightly builds for it''&lt;br /&gt;
&lt;br /&gt;
;[[Development/CMake/Addons for KDE|KDE4 CMake Buildtypes, macros and variables]]&lt;br /&gt;
:''Documentation for the buildtypes (debugfull, release, ...), macros and variables for building KDE4 software, provided by FindKDE4Internal.cmake (manually written)''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tools/Automoc4|Automoc4]]&lt;br /&gt;
:''Automoc4 documentation.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/CMake/Python|CMake for Python projects]]&lt;br /&gt;
:''How to integrate a Python project into the KDE4 cmake system.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Policies==&lt;br /&gt;
&lt;br /&gt;
;[[Policies/CMake_Commit_Policy|Commit Policy for kdelibs/cmake/modules/]]&lt;br /&gt;
:''The files in kdelibs/cmake/modules/ are part of the public interface of KDE, some special policies apply to committing there.''&lt;br /&gt;
&lt;br /&gt;
;[[Policies/CMake_and_Source_Compatibility|Source compatiblity with CMake]]&lt;br /&gt;
:''This page discusses what has to be taken care of in order to stay source compatible on the CMake level.''&lt;br /&gt;
&lt;br /&gt;
;[[Policies/CMake_Coding_Style|Coding style for CMake files]]&lt;br /&gt;
:''Some guidelines how to write CMake scripts in KDE.''&lt;br /&gt;
&lt;br /&gt;
==Changelog for KDE's CMake buildsystem==&lt;br /&gt;
&lt;br /&gt;
;[[Development/CMake_KDE_4_5 |Changes in the buildsystem with KDE 4.5]]&lt;br /&gt;
:''What has changed in KDE 4.5 compared to KDE 4.4''&lt;br /&gt;
&lt;br /&gt;
;[[Development/CMake_KDE_4_4 |Changes in the buildsystem with KDE 4.4]]&lt;br /&gt;
:''What has changed in KDE 4.4 compared to KDE 4.3''&lt;br /&gt;
&lt;br /&gt;
;[[Development/CMake_KDE_4_3 |Changes in the buildsystem with KDE 4.3]]&lt;br /&gt;
:''What has changed in KDE 4.3 compared to KDE 4.2''&lt;br /&gt;
&lt;br /&gt;
;[[Development/CMake_KDE_4_2 |Changes in the buildsystem with KDE 4.2]]&lt;br /&gt;
:''What has changed in KDE 4.2 compared to KDE 4.0/4.1''&lt;br /&gt;
&lt;br /&gt;
==Extra-CMake-Modules==&lt;br /&gt;
* [[Development/ECM_SourceIncompatChanges|Source Incompatible changes]]&lt;br /&gt;
&lt;br /&gt;
==More Places to learn about CMake==&lt;br /&gt;
&lt;br /&gt;
Here are some good places to learn about CMake in general:&lt;br /&gt;
* [http://www.cmake.org/HTML/Documentation.html CMake Manual]&lt;br /&gt;
* [http://www.cmake.org/Wiki/CMake CMake Wiki]&lt;br /&gt;
* [http://www.cmake.org/Wiki/CMake_HowToDoPlatformChecks CMake System Checks ]&lt;br /&gt;
* [http://www.cmake.org/Wiki/CMake_HowToFindInstalledSoftware Finding Optional Packages ]&lt;br /&gt;
* [http://www.cmake.org/Wiki/HowToBuildKDE4Software KDE 4 Tutorial at the CMake Wiki ]&lt;br /&gt;
* [http://www.cmake.org/Wiki/CMake_FAQ CMake FAQ]&lt;br /&gt;
* [http://www.elpauer.org/stuff/learning_cmake.pdf Slides for the &amp;quot;Learning CMake&amp;quot; seminar]&lt;br /&gt;
* [http://mail.kde.org/pipermail/kde-buildsystem/ The kde-buildsystem Mailing List Archive]&lt;br /&gt;
&lt;br /&gt;
Also, consider joining the [http://www.cmake.org/mailman/listinfo/cmake CMake mailing list].&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development</id>
		<title>Development</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development"/>
				<updated>2011-05-15T11:49:37Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOEDITSECTION__ __NOTOC__ {{Template:I18n/Language Navigation Bar|Development}}&lt;br /&gt;
{| style=&amp;quot;margin: 1em 2.5% 0 2.5%; padding: 0 5px;&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=2|[[Image:Discover.png|noframe]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-left: 50px;&amp;quot; |[[Image:Action_launch.svg|noframe|left|40px]] ||&lt;br /&gt;
;[[Development/Architecture|KDE Architecture]]&lt;br /&gt;
:Architectural design documents explaining KDE technologies.&lt;br /&gt;
:''Related'': [http://api.kde.org API Documentation]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-left: 50px;&amp;quot;|[[Image:Action_configure.svg|noframe|left|40px]] ||&lt;br /&gt;
;[[Development/Tutorials|Programming Tutorials]]&lt;br /&gt;
:Step by step tutorials for KDE development.&lt;br /&gt;
:''Related:'' [[Development/Tools|Development Tools]] | [[Development/FAQs|FAQs]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-left: 50px;&amp;quot;|[[Image:Action_rebuild.svg|noframe|left|40px]] ||&lt;br /&gt;
;[[Development/Languages|Programming Languages]]&lt;br /&gt;
:Supported programming languages for KDE development.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-left: 50px;&amp;quot;|[[Image:CMake-logo-48.png|noframe|left|48px]] ||&lt;br /&gt;
;[[Development/CMake|CMake]]&lt;br /&gt;
:CMake related information.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-left: 50px;&amp;quot;|[[Image:Git_icon.png|noframe|left|48px]] ||&lt;br /&gt;
;[[Development/Git|Version-control System - Git]]&lt;br /&gt;
:Git related information.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-left: 50px;&amp;quot; |[[Image:Action_note.svg|noframe|left|40px]] ||&lt;br /&gt;
;[[Development/Guidelines|Standards &amp;amp; Guidelines]]&lt;br /&gt;
:Developer guidelines and technical standards KDE uses.&lt;br /&gt;
:''Related:'' [[Policies|Code Contribution and Development Policies]] | [[Development/Further Information|Further Information]] (links, books, blogs, etc.)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-left: 50px;&amp;quot; |[[Image:Action_tool.svg|noframe|left|40px]] ||&lt;br /&gt;
;[[Development/Software Engineering Framework|Software Engineering Framework]]&lt;br /&gt;
:Software Engineering tools and processes used by KDE.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-left: 50px;&amp;quot; |[[Image:Action_help.svg|noframe|left|40px]] ||&lt;br /&gt;
;[[Development/Getting Help|Getting Help]]&lt;br /&gt;
:Resources for finding help with KDE development.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/File:Git_icon.png</id>
		<title>File:Git icon.png</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/File:Git_icon.png"/>
				<updated>2011-05-15T11:46:21Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: git icon from http://commons.wikimedia.org/wiki/File:Git_icon.svg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;git icon from http://commons.wikimedia.org/wiki/File:Git_icon.svg&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/Git/GitQuickStart</id>
		<title>Development/Tutorials/Git/GitQuickStart</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/Git/GitQuickStart"/>
				<updated>2011-05-15T11:36:51Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: /* Pushing your changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Getting the sources from git ==&lt;br /&gt;
* head over to https://projects.kde.org/projects . There you'll see a long list with all the projects hosted on KDE git.&lt;br /&gt;
* find the project you are interested in, and click the link, e.g. to Attica&lt;br /&gt;
* on the Attica project page, go to the repository page. There you will find the clone command.&lt;br /&gt;
* Execute this clone command and you'll get a copy of the sources:&lt;br /&gt;
    $ git clone git://anongit.kde.org/attica&lt;br /&gt;
&lt;br /&gt;
== Pushing your changes ==&lt;br /&gt;
&lt;br /&gt;
If you followed the steps above, you now have a clone of the git repository.&lt;br /&gt;
&lt;br /&gt;
In order to be able to commit your changes, you need&lt;br /&gt;
* tell git to push to git.kde.org, instead of anongit.kde.org&lt;br /&gt;
* to setup a ssh key for authentication&lt;br /&gt;
* tell ssh to use that key for git.kde.org&lt;br /&gt;
&lt;br /&gt;
In the following we go through this step by step&lt;br /&gt;
&lt;br /&gt;
=== Telling git to push to git.kde.org ===&lt;br /&gt;
&lt;br /&gt;
Above, we got the sources from anongit.kde.org. These are mirrors of git.kde.org and should for performance reasons be used for obtaining the sources. But for committing git.kde.org has to be used.&lt;br /&gt;
&lt;br /&gt;
This is done by putting the following into ~/.gitconfig:&lt;br /&gt;
&lt;br /&gt;
  [url &amp;quot;git@git.kde.org:&amp;quot;]&lt;br /&gt;
      pushInsteadOf = git://anongit.kde.org/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Setting up ssh keys for authentication ===&lt;br /&gt;
&lt;br /&gt;
* create a set of keys to use using ssh-keygen, and name the key e.g. id_rsa.kde.&lt;br /&gt;
* log in to https://identity.kde.org/&lt;br /&gt;
* go to &amp;quot;Profile&amp;quot; -&amp;gt; &amp;quot;Edit&amp;quot; -&amp;gt; &amp;quot;Edit public ssh keys&amp;quot;&lt;br /&gt;
* upload the public key you just created&lt;br /&gt;
&lt;br /&gt;
=== Tell ssh to use this key ===&lt;br /&gt;
&lt;br /&gt;
* put the following in your ~/.ssh/config :&lt;br /&gt;
&lt;br /&gt;
  Host git.kde.org&lt;br /&gt;
    User git&lt;br /&gt;
    IdentityFile ~/.ssh/id_rsa.kde&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* now you should be able to push your changes to the central git repository:&lt;br /&gt;
   $ git push&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/Git/GitQuickStart</id>
		<title>Development/Tutorials/Git/GitQuickStart</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/Git/GitQuickStart"/>
				<updated>2011-05-15T11:31:44Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: /* Getting the sources from git */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Getting the sources from git ==&lt;br /&gt;
* head over to https://projects.kde.org/projects . There you'll see a long list with all the projects hosted on KDE git.&lt;br /&gt;
* find the project you are interested in, and click the link, e.g. to Attica&lt;br /&gt;
* on the Attica project page, go to the repository page. There you will find the clone command.&lt;br /&gt;
* Execute this clone command and you'll get a copy of the sources:&lt;br /&gt;
    $ git clone git://anongit.kde.org/attica&lt;br /&gt;
&lt;br /&gt;
== Pushing your changes ==&lt;br /&gt;
&lt;br /&gt;
If you followed the steps above, you now have a clone of the git repository.&lt;br /&gt;
&lt;br /&gt;
In order to be able to commit your changes, you need&lt;br /&gt;
* tell git to push to git.kde.org, instead of anongit.kde.org&lt;br /&gt;
* to setup a ssh key for authentication&lt;br /&gt;
* tell ssh to use that key for git.kde.org&lt;br /&gt;
&lt;br /&gt;
In the following we go through this step by step&lt;br /&gt;
&lt;br /&gt;
=== Telling git to push to git.kde.org ===&lt;br /&gt;
&lt;br /&gt;
Above, we got the sources from anongit.kde.org. These are mirrors of git.kde.org and should for performance reasons be used for obtaining the sources. But for committing git.kde.org has to be used.&lt;br /&gt;
&lt;br /&gt;
This is done by putting the following into ~/.gitconfig:&lt;br /&gt;
&lt;br /&gt;
  [url &amp;quot;git@git.kde.org:&amp;quot;]&lt;br /&gt;
      pushInsteadOf = git://anongit.kde.org/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Setting up ssh keys for authentication ===&lt;br /&gt;
&lt;br /&gt;
* create a set of keys to use using ssh-keygen, and name the key e.g. id_rsa.kde.&lt;br /&gt;
* log in to https://identity.kde.org/&lt;br /&gt;
* go to &amp;quot;Profile&amp;quot; -&amp;gt; &amp;quot;Edit&amp;quot; -&amp;gt; &amp;quot;Edit public ssh keys&amp;quot;&lt;br /&gt;
* upload the public key you just created&lt;br /&gt;
&lt;br /&gt;
=== Tell ssh to use this key ===&lt;br /&gt;
&lt;br /&gt;
* put the following in your ~/.ssh/config :&lt;br /&gt;
&lt;br /&gt;
  Host git.kde.org&lt;br /&gt;
    User git&lt;br /&gt;
    IdentityFile ~/.ssh/id_rsa.kde&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/Git/GitQuickStart</id>
		<title>Development/Tutorials/Git/GitQuickStart</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/Git/GitQuickStart"/>
				<updated>2011-05-15T11:30:58Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: /* Pushing your changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Getting the sources from git ==&lt;br /&gt;
* head over to https://projects.kde.org/projects . There you'll see a long list with all the projects hosted on KDE git.&lt;br /&gt;
* find the project you are interested in, and click the link, e.g. to Attica&lt;br /&gt;
* on the Attica project page, go to the repository page. There you will find the clone command.&lt;br /&gt;
* Execute this clone command and you'll get a copy of the sources: $ git clone git://anongit.kde.org/attica&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pushing your changes ==&lt;br /&gt;
&lt;br /&gt;
If you followed the steps above, you now have a clone of the git repository.&lt;br /&gt;
&lt;br /&gt;
In order to be able to commit your changes, you need&lt;br /&gt;
* tell git to push to git.kde.org, instead of anongit.kde.org&lt;br /&gt;
* to setup a ssh key for authentication&lt;br /&gt;
* tell ssh to use that key for git.kde.org&lt;br /&gt;
&lt;br /&gt;
In the following we go through this step by step&lt;br /&gt;
&lt;br /&gt;
=== Telling git to push to git.kde.org ===&lt;br /&gt;
&lt;br /&gt;
Above, we got the sources from anongit.kde.org. These are mirrors of git.kde.org and should for performance reasons be used for obtaining the sources. But for committing git.kde.org has to be used.&lt;br /&gt;
&lt;br /&gt;
This is done by putting the following into ~/.gitconfig:&lt;br /&gt;
&lt;br /&gt;
  [url &amp;quot;git@git.kde.org:&amp;quot;]&lt;br /&gt;
      pushInsteadOf = git://anongit.kde.org/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Setting up ssh keys for authentication ===&lt;br /&gt;
&lt;br /&gt;
* create a set of keys to use using ssh-keygen, and name the key e.g. id_rsa.kde.&lt;br /&gt;
* log in to https://identity.kde.org/&lt;br /&gt;
* go to &amp;quot;Profile&amp;quot; -&amp;gt; &amp;quot;Edit&amp;quot; -&amp;gt; &amp;quot;Edit public ssh keys&amp;quot;&lt;br /&gt;
* upload the public key you just created&lt;br /&gt;
&lt;br /&gt;
=== Tell ssh to use this key ===&lt;br /&gt;
&lt;br /&gt;
* put the following in your ~/.ssh/config :&lt;br /&gt;
&lt;br /&gt;
  Host git.kde.org&lt;br /&gt;
    User git&lt;br /&gt;
    IdentityFile ~/.ssh/id_rsa.kde&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/Git/GitQuickStart</id>
		<title>Development/Tutorials/Git/GitQuickStart</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/Git/GitQuickStart"/>
				<updated>2011-05-15T11:15:23Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Getting the sources from git ==&lt;br /&gt;
* head over to https://projects.kde.org/projects . There you'll see a long list with all the projects hosted on KDE git.&lt;br /&gt;
* find the project you are interested in, and click the link, e.g. to Attica&lt;br /&gt;
* on the Attica project page, go to the repository page. There you will find the clone command.&lt;br /&gt;
* Execute this clone command and you'll get a copy of the sources: $ git clone git://anongit.kde.org/attica&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pushing your changes ==&lt;br /&gt;
&lt;br /&gt;
If you followed the steps above, you now have a clone of the git repository.&lt;br /&gt;
&lt;br /&gt;
In order to be able to commit your changes, you need&lt;br /&gt;
* tell git to push to git.kde.org, instead of anongit.kde.org&lt;br /&gt;
* to setup a ssh key for authentication&lt;br /&gt;
* tell ssh to use that key for git.kde.org&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/Git/GitQuickStart</id>
		<title>Development/Tutorials/Git/GitQuickStart</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/Git/GitQuickStart"/>
				<updated>2011-05-15T11:09:47Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: Created page with '  === Getting the sources from git === * head over to https://projects.kde.org/projects . There you'll see a long list with all the projects hosted on KDE git. * find the project...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
=== Getting the sources from git ===&lt;br /&gt;
* head over to https://projects.kde.org/projects . There you'll see a long list with all the projects hosted on KDE git.&lt;br /&gt;
* find the project you are interested in, and click the link, e.g. to Attica&lt;br /&gt;
* on the Attica project page, go to the repository page. There you will find the clone command.&lt;br /&gt;
* Execute this clone command and you'll get a copy of the sources: $ git clone git://anongit.kde.org/attica&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git</id>
		<title>Development/Git</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git"/>
				<updated>2011-05-15T11:02:50Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: /* KDE Git Tutorials */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the hub page for all information about the use of Git by KDE.&lt;br /&gt;
&lt;br /&gt;
This page is a work in progress where all new Git material is being organised.  Most of these sections will eventually be moved to their own pages.  Feel free to add stuff.&lt;br /&gt;
&lt;br /&gt;
== KDE and Git ==&lt;br /&gt;
&lt;br /&gt;
This section provides details on using the KDE Git infrastructure.&lt;br /&gt;
&lt;br /&gt;
A primary resource is still http://community.kde.org/Sysadmin/GitKdeOrgManual&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Configuration ===&lt;br /&gt;
&lt;br /&gt;
How to configure Git for use with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
Please see the [[/Configuration|Git Configuration]] page.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Policies ===&lt;br /&gt;
&lt;br /&gt;
KDE policies on Git.  More generic development policies go elsewhere.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Recipes ===&lt;br /&gt;
&lt;br /&gt;
Short recipes for using Git with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
Please see the [[/Recipes|Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Tutorials ===&lt;br /&gt;
&lt;br /&gt;
More in-depth instructions in using Git.&lt;br /&gt;
&lt;br /&gt;
* [[Development/Tutorials/Git/GitQuickStart|A quick step-by-step guide for getting started]]&lt;br /&gt;
* [[Development/Tutorials/Git/Create a patch|Creating a patch]]&lt;br /&gt;
&lt;br /&gt;
Please help filling this section by &lt;br /&gt;
* checking the links at the bottom of the page and see which still have valid content&lt;br /&gt;
* write tutorials yourself&lt;br /&gt;
&lt;br /&gt;
== External Git Resources ==&lt;br /&gt;
&lt;br /&gt;
Links to useful external sites about Git&lt;br /&gt;
&lt;br /&gt;
=== Official Documentation ===&lt;br /&gt;
&lt;br /&gt;
* http://git-scm.com/documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Git for SVN Users ===&lt;br /&gt;
&lt;br /&gt;
* http://git-scm.com/course/svn.html&lt;br /&gt;
* https://git.wiki.kernel.org/index.php/GitSvnCrashCourse&lt;br /&gt;
&lt;br /&gt;
=== Git books ===&lt;br /&gt;
&lt;br /&gt;
* [http://progit.org/book/ Pro Git] - An easy to understand book on git (CC licensed).&lt;br /&gt;
* [http://book.git-scm.com/ The git community book], also as [http://book.git-scm.com/book.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
=== Tutorials ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html The official tutorial introduction to Git]&lt;br /&gt;
* [http://www-cs-students.stanford.edu/~blynn/gitmagic/ Git Magic] - A good intro to git (in several languages!) &lt;br /&gt;
*[http://tom.preston-werner.com/2009/05/19/the-git-parable.html The Git Parable] - Essential reading if you want to truly understand git.&lt;br /&gt;
* [http://www.gitcasts.com/ Git Screencasts]&lt;br /&gt;
&lt;br /&gt;
=== Cheat Sheets ===&lt;br /&gt;
&lt;br /&gt;
* [http://cheat.errtheblog.com/s/git Quick reference]&lt;br /&gt;
* [http://zrusin.blogspot.com/2007/09/git-cheat-sheet.html Illustrated git cheat sheet]&lt;br /&gt;
&lt;br /&gt;
= Documentation Changes =&lt;br /&gt;
&lt;br /&gt;
== KDE Documentation Review ==&lt;br /&gt;
&lt;br /&gt;
=== Existing Pages For Review ===&lt;br /&gt;
&lt;br /&gt;
Existing KDE pages about Git, SVN, and/or buildinga KDE that need to be revised.  When revising pages try to split the generic development and revision control policies separate from Git specific stuff.  Do not refer to &amp;quot;the KDE Git Repository&amp;quot; but instead the &amp;quot;KDE Code Repository&amp;quot;.  Lots of small simple pages that are less daunting to newbies and can be linked to from multiple locations are preferred to massive walls of text.&lt;br /&gt;
&lt;br /&gt;
Keep:&lt;br /&gt;
* [[Development/Tutorials/Git/Basics]]&lt;br /&gt;
* [[Development/Tutorials/Git/git-svn]]&lt;br /&gt;
* [[Development/Tutorials/Git/kde-qt]]&lt;br /&gt;
* [[Getting Started/Sources/Amarok Git Tutorial]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On community.kde.org:&lt;br /&gt;
* http://community.kde.org/Sysadmin/GitKdeOrgManual&lt;br /&gt;
* http://community.kde.org/20110213_GitWorkflowAgenda&lt;br /&gt;
* http://community.kde.org/20110213_GitWorkflowAgenda/StevesIdea&lt;br /&gt;
&lt;br /&gt;
On techbase.kde.org:&lt;br /&gt;
* [[Getting Started]]&lt;br /&gt;
* [[Getting Started/Build/KDE4]]&lt;br /&gt;
* [[Getting Started/Build/KDE4.x]]&lt;br /&gt;
* [[Getting Started/Build/KDE4/Prerequisites]]&lt;br /&gt;
* [[Getting Started/Build/KDE4/Windows/subversion]]&lt;br /&gt;
* [[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts]]&lt;br /&gt;
* [[Getting_Started/Build/kdesrc-build]]&lt;br /&gt;
* [[Getting Started/Sources/Anonymous SVN]]&lt;br /&gt;
* [[Getting_Started/Sources/Using_Subversion_with_KDE]]&lt;br /&gt;
* [[Getting_Started/Set_up_KDE_4_for_development]]&lt;br /&gt;
* [[Getting_Started/Using_an_IDE_with_KDE4]]&lt;br /&gt;
* [[Policies/SVN_Commit_Policy]]&lt;br /&gt;
* [[Policies/SVN_Guidelines]]&lt;br /&gt;
* [[Development/Tools]]&lt;br /&gt;
* [[Development/Tutorials/Git/Recipes]]&lt;br /&gt;
* [[Development/Tutorials/Git/decoding-git]]&lt;br /&gt;
* [[Projects/rekonq/Git_with_rekonq_HowTo]]&lt;br /&gt;
* [[Projects/Related/Subversion]]&lt;br /&gt;
* [[Projects/MovetoGit]]&lt;br /&gt;
* [[Projects/MoveToGit/StepsToMove]]&lt;br /&gt;
* [[Contribute/Get a SVN Account]]&lt;br /&gt;
* [[Contribute/First Steps with your KDE SVN Account]]&lt;br /&gt;
&lt;br /&gt;
There are also numerous other pages referring to &amp;quot;the KDE SVN/subversion repositories&amp;quot; which should be replaced with the generic &amp;quot;KDE code repositories&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
There are also numerous translated pages which will need to be updated once the original pages are completed.&lt;br /&gt;
&lt;br /&gt;
=== New Page Structure ===&lt;br /&gt;
&lt;br /&gt;
* [[Getting_Started]]&lt;br /&gt;
* [[Getting_Started/Build]]&lt;br /&gt;
* [[Getting_Started/Build/Environment]]&lt;br /&gt;
* [[Getting_Started/Build/Requirements]]&lt;br /&gt;
* [[Getting_Started/Build/Qt]]&lt;br /&gt;
* [[Getting_Started/Build/KdeSupport]]&lt;br /&gt;
* [[Getting_Started/Build/Windows]]&lt;br /&gt;
* [[Getting_Started/Build/Mac_OS_X]]&lt;br /&gt;
* [[Getting_Started/Run]]&lt;br /&gt;
* [[Getting_Started/Run/Shell]]&lt;br /&gt;
* [[Getting_Started/Run/Nested_Session]]&lt;br /&gt;
* [[Getting_Started/Run/Full_Session]]&lt;br /&gt;
&lt;br /&gt;
=== For Deletion ===&lt;br /&gt;
&lt;br /&gt;
The following pages can now be deleted and/or redirected:&lt;br /&gt;
* [[Development/Tutorials/Git]]&lt;br /&gt;
* [[Development/Tutorials/Git/KdeOnGit]]&lt;br /&gt;
* [[Development/Tutorials/Git/Pushing]]&lt;br /&gt;
* [[Development/Tutorials/Git/BestPractices]]&lt;br /&gt;
* [[Development/Tutorials/Git/Intermediate]]&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/Git/Create_a_patch</id>
		<title>Development/Tutorials/Git/Create a patch</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/Git/Create_a_patch"/>
				<updated>2011-05-15T10:55:36Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page is mostly useful for people who want to submit a patch against a git repository, but for any reason don't want to use merge requests.&lt;br /&gt;
&lt;br /&gt;
== Setting up git ==&lt;br /&gt;
&lt;br /&gt;
You can skip this part if your git is already set up correctly with your name and email address.&lt;br /&gt;
&lt;br /&gt;
You will need to set up git for your user if you still did not do it. It's quite easy and it boils down to these two commands:&lt;br /&gt;
&lt;br /&gt;
 git config --global user.name &amp;quot;Your name&amp;quot;&lt;br /&gt;
 git config --global user.email &amp;quot;Your email address&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Then you're good to go, and all your commits will be signed with your name and email&lt;br /&gt;
&lt;br /&gt;
== Using git-format-patch to send patches through email ==&lt;br /&gt;
This method will let you create a patch (or a set of patches) ready to be applied. We will suppose we want to add a FooClass to Amarok (which obviously does not exist).&lt;br /&gt;
&lt;br /&gt;
=== Starting off ===&lt;br /&gt;
First of all, you will have to clone the repository. Amarok repository lies here: http://gitorious.org/amarok/amarok . Let's start by cloning the repository. In a terminal you would write:&lt;br /&gt;
&lt;br /&gt;
 git clone git://gitorious.org/amarok/amarok.git&lt;br /&gt;
&lt;br /&gt;
This will download the repository in a directory named &amp;quot;amarok&amp;quot; on your machine.&lt;br /&gt;
&lt;br /&gt;
=== Getting the work done ===&lt;br /&gt;
We create the FooClass.{cpp,h} files and start modifying them. Once we're satisfied, we're ready to commit the result. Since we have created new files, we need to add them to the repository:&lt;br /&gt;
&lt;br /&gt;
 git add FooClass.{cpp,h}&lt;br /&gt;
&lt;br /&gt;
Good to go. Now we can commit the result.&lt;br /&gt;
&lt;br /&gt;
 git commit -m &amp;quot;Adding important FooClass for Amarok&amp;quot;&lt;br /&gt;
&lt;br /&gt;
You obviously should change the message to what suits you more. Now, let's suppose that right when you are about to send the patch you find out about a small mistake in the file. Don't panic, just do your modification, and commit again (no need for git add this time)&lt;br /&gt;
&lt;br /&gt;
 git commit -am &amp;quot;Updating FooClass&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Don't worry about the 2 commits: git will handle that for you&lt;br /&gt;
&lt;br /&gt;
=== Creating the patch ===&lt;br /&gt;
Ok, so our work is done and we just need to create the patches. It's really simple; just do&lt;br /&gt;
&lt;br /&gt;
 git format-patch origin&lt;br /&gt;
&lt;br /&gt;
This command will create a set of patches out of all the commits you made since you cloned the repository. When running this command, you should be prompted a list of created files, one per commit. They should be named like &amp;lt;number&amp;gt;-commit-message.patch; so in our case git format-patch would create 0001-Adding-important-FooClass-for-Amarok.patch and 0002-Updating-FooClass.patch. Remember to send ALL the patches, and not just the last ones!&lt;br /&gt;
&lt;br /&gt;
These patches contains also your commit information, so your name will appear in the commit log.&lt;br /&gt;
&lt;br /&gt;
=== Sending the patch ===&lt;br /&gt;
You can now send the patch to ReviewBoard, to a developer, or using git send-email. The latter method will not be covered here since it needs some additional configuration. Please see git help send-email to learn more about it.&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git</id>
		<title>Development/Git</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git"/>
				<updated>2011-05-15T10:55:00Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the hub page for all information about the use of Git by KDE.&lt;br /&gt;
&lt;br /&gt;
This page is a work in progress where all new Git material is being organised.  Most of these sections will eventually be moved to their own pages.  Feel free to add stuff.&lt;br /&gt;
&lt;br /&gt;
== KDE and Git ==&lt;br /&gt;
&lt;br /&gt;
This section provides details on using the KDE Git infrastructure.&lt;br /&gt;
&lt;br /&gt;
A primary resource is still http://community.kde.org/Sysadmin/GitKdeOrgManual&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Configuration ===&lt;br /&gt;
&lt;br /&gt;
How to configure Git for use with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
Please see the [[/Configuration|Git Configuration]] page.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Policies ===&lt;br /&gt;
&lt;br /&gt;
KDE policies on Git.  More generic development policies go elsewhere.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Recipes ===&lt;br /&gt;
&lt;br /&gt;
Short recipes for using Git with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
Please see the [[/Recipes|Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Tutorials ===&lt;br /&gt;
&lt;br /&gt;
More in-depth instructions in using Git.&lt;br /&gt;
&lt;br /&gt;
* [[Development/Tutorials/Git/Create a patch|Creating a patch]]&lt;br /&gt;
&lt;br /&gt;
Please help filling this section by &lt;br /&gt;
* checking the links at the bottom of the page and see which still have valid content&lt;br /&gt;
* write tutorials yourself&lt;br /&gt;
&lt;br /&gt;
== External Git Resources ==&lt;br /&gt;
&lt;br /&gt;
Links to useful external sites about Git&lt;br /&gt;
&lt;br /&gt;
=== Official Documentation ===&lt;br /&gt;
&lt;br /&gt;
* http://git-scm.com/documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Git for SVN Users ===&lt;br /&gt;
&lt;br /&gt;
* http://git-scm.com/course/svn.html&lt;br /&gt;
* https://git.wiki.kernel.org/index.php/GitSvnCrashCourse&lt;br /&gt;
&lt;br /&gt;
=== Git books ===&lt;br /&gt;
&lt;br /&gt;
* [http://progit.org/book/ Pro Git] - An easy to understand book on git (CC licensed).&lt;br /&gt;
* [http://book.git-scm.com/ The git community book], also as [http://book.git-scm.com/book.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
=== Tutorials ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html The official tutorial introduction to Git]&lt;br /&gt;
* [http://www-cs-students.stanford.edu/~blynn/gitmagic/ Git Magic] - A good intro to git (in several languages!) &lt;br /&gt;
*[http://tom.preston-werner.com/2009/05/19/the-git-parable.html The Git Parable] - Essential reading if you want to truly understand git.&lt;br /&gt;
* [http://www.gitcasts.com/ Git Screencasts]&lt;br /&gt;
&lt;br /&gt;
=== Cheat Sheets ===&lt;br /&gt;
&lt;br /&gt;
* [http://cheat.errtheblog.com/s/git Quick reference]&lt;br /&gt;
* [http://zrusin.blogspot.com/2007/09/git-cheat-sheet.html Illustrated git cheat sheet]&lt;br /&gt;
&lt;br /&gt;
= Documentation Changes =&lt;br /&gt;
&lt;br /&gt;
== KDE Documentation Review ==&lt;br /&gt;
&lt;br /&gt;
=== Existing Pages For Review ===&lt;br /&gt;
&lt;br /&gt;
Existing KDE pages about Git, SVN, and/or buildinga KDE that need to be revised.  When revising pages try to split the generic development and revision control policies separate from Git specific stuff.  Do not refer to &amp;quot;the KDE Git Repository&amp;quot; but instead the &amp;quot;KDE Code Repository&amp;quot;.  Lots of small simple pages that are less daunting to newbies and can be linked to from multiple locations are preferred to massive walls of text.&lt;br /&gt;
&lt;br /&gt;
Keep:&lt;br /&gt;
* [[Development/Tutorials/Git/Basics]]&lt;br /&gt;
* [[Development/Tutorials/Git/git-svn]]&lt;br /&gt;
* [[Development/Tutorials/Git/kde-qt]]&lt;br /&gt;
* [[Getting Started/Sources/Amarok Git Tutorial]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On community.kde.org:&lt;br /&gt;
* http://community.kde.org/Sysadmin/GitKdeOrgManual&lt;br /&gt;
* http://community.kde.org/20110213_GitWorkflowAgenda&lt;br /&gt;
* http://community.kde.org/20110213_GitWorkflowAgenda/StevesIdea&lt;br /&gt;
&lt;br /&gt;
On techbase.kde.org:&lt;br /&gt;
* [[Getting Started]]&lt;br /&gt;
* [[Getting Started/Build/KDE4]]&lt;br /&gt;
* [[Getting Started/Build/KDE4.x]]&lt;br /&gt;
* [[Getting Started/Build/KDE4/Prerequisites]]&lt;br /&gt;
* [[Getting Started/Build/KDE4/Windows/subversion]]&lt;br /&gt;
* [[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts]]&lt;br /&gt;
* [[Getting_Started/Build/kdesrc-build]]&lt;br /&gt;
* [[Getting Started/Sources/Anonymous SVN]]&lt;br /&gt;
* [[Getting_Started/Sources/Using_Subversion_with_KDE]]&lt;br /&gt;
* [[Getting_Started/Set_up_KDE_4_for_development]]&lt;br /&gt;
* [[Getting_Started/Using_an_IDE_with_KDE4]]&lt;br /&gt;
* [[Policies/SVN_Commit_Policy]]&lt;br /&gt;
* [[Policies/SVN_Guidelines]]&lt;br /&gt;
* [[Development/Tools]]&lt;br /&gt;
* [[Development/Tutorials/Git/Recipes]]&lt;br /&gt;
* [[Development/Tutorials/Git/decoding-git]]&lt;br /&gt;
* [[Projects/rekonq/Git_with_rekonq_HowTo]]&lt;br /&gt;
* [[Projects/Related/Subversion]]&lt;br /&gt;
* [[Projects/MovetoGit]]&lt;br /&gt;
* [[Projects/MoveToGit/StepsToMove]]&lt;br /&gt;
* [[Contribute/Get a SVN Account]]&lt;br /&gt;
* [[Contribute/First Steps with your KDE SVN Account]]&lt;br /&gt;
&lt;br /&gt;
There are also numerous other pages referring to &amp;quot;the KDE SVN/subversion repositories&amp;quot; which should be replaced with the generic &amp;quot;KDE code repositories&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
There are also numerous translated pages which will need to be updated once the original pages are completed.&lt;br /&gt;
&lt;br /&gt;
=== New Page Structure ===&lt;br /&gt;
&lt;br /&gt;
* [[Getting_Started]]&lt;br /&gt;
* [[Getting_Started/Build]]&lt;br /&gt;
* [[Getting_Started/Build/Environment]]&lt;br /&gt;
* [[Getting_Started/Build/Requirements]]&lt;br /&gt;
* [[Getting_Started/Build/Qt]]&lt;br /&gt;
* [[Getting_Started/Build/KdeSupport]]&lt;br /&gt;
* [[Getting_Started/Build/Windows]]&lt;br /&gt;
* [[Getting_Started/Build/Mac_OS_X]]&lt;br /&gt;
* [[Getting_Started/Run]]&lt;br /&gt;
* [[Getting_Started/Run/Shell]]&lt;br /&gt;
* [[Getting_Started/Run/Nested_Session]]&lt;br /&gt;
* [[Getting_Started/Run/Full_Session]]&lt;br /&gt;
&lt;br /&gt;
=== For Deletion ===&lt;br /&gt;
&lt;br /&gt;
The following pages can now be deleted and/or redirected:&lt;br /&gt;
* [[Development/Tutorials/Git]]&lt;br /&gt;
* [[Development/Tutorials/Git/KdeOnGit]]&lt;br /&gt;
* [[Development/Tutorials/Git/Pushing]]&lt;br /&gt;
* [[Development/Tutorials/Git/BestPractices]]&lt;br /&gt;
* [[Development/Tutorials/Git/Intermediate]]&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/Git/Create_a_patch</id>
		<title>Development/Tutorials/Git/Create a patch</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/Git/Create_a_patch"/>
				<updated>2011-05-15T10:51:25Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: /* Setting up git */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{warning|This page is yet to be reviewed for changes required by the migration to Git.  Information and commands on this page may no longer be valid and should be used with care. Please see the [[Development/Git|KDE Git hub page]] for more details. }}&lt;br /&gt;
&lt;br /&gt;
This page is mostly useful for people who want to submit a patch against a git repository, but for any reason don't want to use merge requests.&lt;br /&gt;
&lt;br /&gt;
== Setting up git ==&lt;br /&gt;
&lt;br /&gt;
You can skip this part if your git is already set up correctly with your name and email address.&lt;br /&gt;
&lt;br /&gt;
You will need to set up git for your user if you still did not do it. It's quite easy and it boils down to these two commands:&lt;br /&gt;
&lt;br /&gt;
 git config --global user.name &amp;quot;Your name&amp;quot;&lt;br /&gt;
 git config --global user.email &amp;quot;Your email address&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Then you're good to go, and all your commits will be signed with your name and email&lt;br /&gt;
&lt;br /&gt;
== Using git-format-patch to send patches through email ==&lt;br /&gt;
This method will let you create a patch (or a set of patches) ready to be applied. We will suppose we want to add a FooClass to Amarok (which obviously does not exist).&lt;br /&gt;
&lt;br /&gt;
=== Starting off ===&lt;br /&gt;
First of all, you will have to clone the repository. Amarok repository lies here: http://gitorious.org/amarok/amarok . Let's start by cloning the repository. In a terminal you would write:&lt;br /&gt;
&lt;br /&gt;
 git clone git://gitorious.org/amarok/amarok.git&lt;br /&gt;
&lt;br /&gt;
This will download the repository in a directory named &amp;quot;amarok&amp;quot; on your machine.&lt;br /&gt;
&lt;br /&gt;
=== Getting the work done ===&lt;br /&gt;
We create the FooClass.{cpp,h} files and start modifying them. Once we're satisfied, we're ready to commit the result. Since we have created new files, we need to add them to the repository:&lt;br /&gt;
&lt;br /&gt;
 git add FooClass.{cpp,h}&lt;br /&gt;
&lt;br /&gt;
Good to go. Now we can commit the result.&lt;br /&gt;
&lt;br /&gt;
 git commit -m &amp;quot;Adding important FooClass for Amarok&amp;quot;&lt;br /&gt;
&lt;br /&gt;
You obviously should change the message to what suits you more. Now, let's suppose that right when you are about to send the patch you find out about a small mistake in the file. Don't panic, just do your modification, and commit again (no need for git add this time)&lt;br /&gt;
&lt;br /&gt;
 git commit -am &amp;quot;Updating FooClass&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Don't worry about the 2 commits: git will handle that for you&lt;br /&gt;
&lt;br /&gt;
=== Creating the patch ===&lt;br /&gt;
Ok, so our work is done and we just need to create the patches. It's really simple; just do&lt;br /&gt;
&lt;br /&gt;
 git format-patch origin&lt;br /&gt;
&lt;br /&gt;
This command will create a set of patches out of all the commits you made since you cloned the repository. When running this command, you should be prompted a list of created files, one per commit. They should be named like &amp;lt;number&amp;gt;-commit-message.patch; so in our case git format-patch would create 0001-Adding-important-FooClass-for-Amarok.patch and 0002-Updating-FooClass.patch. Remember to send ALL the patches, and not just the last ones!&lt;br /&gt;
&lt;br /&gt;
These patches contains also your commit information, so your name will appear in the commit log.&lt;br /&gt;
&lt;br /&gt;
=== Sending the patch ===&lt;br /&gt;
You can now send the patch to ReviewBoard, to a developer, or using git send-email. The latter method will not be covered here since it needs some additional configuration. Please see git help send-email to learn more about it.&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git</id>
		<title>Development/Git</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git"/>
				<updated>2011-04-28T20:34:50Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: /* KDE Git Tutorials */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the hub page for all information about the use of Git by KDE.&lt;br /&gt;
&lt;br /&gt;
This page is a work in progress where all new Git material is being organised.  Most of these sections will eventually be moved to their own pages.  Feel free to add stuff.&lt;br /&gt;
&lt;br /&gt;
== KDE and Git ==&lt;br /&gt;
&lt;br /&gt;
This section provides details on using the KDE Git infrastructure.&lt;br /&gt;
&lt;br /&gt;
A primary resource is still http://community.kde.org/Sysadmin/GitKdeOrgManual&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Configuration ===&lt;br /&gt;
&lt;br /&gt;
How to configure Git for use with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
Please see the [[/Configuration|Git Configuration]] page.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Policies ===&lt;br /&gt;
&lt;br /&gt;
KDE policies on Git.  More generic development policies go elsewhere.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Recipes ===&lt;br /&gt;
&lt;br /&gt;
Short recipes for using Git with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
Please see the [[/Recipes|Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Tutorials ===&lt;br /&gt;
&lt;br /&gt;
More in-depth instructions in using Git.&lt;br /&gt;
&lt;br /&gt;
Please help filling this section by &lt;br /&gt;
* checking the links at the bottom of the page and see which still have valid content&lt;br /&gt;
* write tutorials yourself&lt;br /&gt;
&lt;br /&gt;
== External Git Resources ==&lt;br /&gt;
&lt;br /&gt;
Links to useful external sites about Git&lt;br /&gt;
&lt;br /&gt;
=== Official Documentation ===&lt;br /&gt;
&lt;br /&gt;
* http://git-scm.com/documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Git for SVN Users ===&lt;br /&gt;
&lt;br /&gt;
* http://git-scm.com/course/svn.html&lt;br /&gt;
* https://git.wiki.kernel.org/index.php/GitSvnCrashCourse&lt;br /&gt;
&lt;br /&gt;
=== Git books ===&lt;br /&gt;
&lt;br /&gt;
* [http://progit.org/book/ Pro Git] - An easy to understand book on git (CC licensed).&lt;br /&gt;
* [http://book.git-scm.com/ The git community book], also as [http://book.git-scm.com/book.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
=== Tutorials ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html The official tutorial introduction to Git]&lt;br /&gt;
* [http://www-cs-students.stanford.edu/~blynn/gitmagic/ Git Magic] - A good intro to git (in several languages!) &lt;br /&gt;
*[http://tom.preston-werner.com/2009/05/19/the-git-parable.html The Git Parable] - Essential reading if you want to truly understand git.&lt;br /&gt;
* [http://www.gitcasts.com/ Git Screencasts]&lt;br /&gt;
&lt;br /&gt;
=== Cheat Sheets ===&lt;br /&gt;
&lt;br /&gt;
* [http://cheat.errtheblog.com/s/git Quick reference]&lt;br /&gt;
* [http://zrusin.blogspot.com/2007/09/git-cheat-sheet.html Illustrated git cheat sheet]&lt;br /&gt;
&lt;br /&gt;
= Documentation Changes =&lt;br /&gt;
&lt;br /&gt;
== KDE Documentation Review ==&lt;br /&gt;
&lt;br /&gt;
=== Existing Pages For Review ===&lt;br /&gt;
&lt;br /&gt;
Existing KDE pages about Git, SVN, and/or buildinga KDE that need to be revised.  When revising pages try to split the generic development and revision control policies separate from Git specific stuff.  Do not refer to &amp;quot;the KDE Git Repository&amp;quot; but instead the &amp;quot;KDE Code Repository&amp;quot;.  Lots of small simple pages that are less daunting to newbies and can be linked to from multiple locations are preferred to massive walls of text.&lt;br /&gt;
&lt;br /&gt;
Keep:&lt;br /&gt;
* [[Development/Tutorials/Git/Basics]]&lt;br /&gt;
* [[Development/Tutorials/Git/git-svn]]&lt;br /&gt;
* [[Development/Tutorials/Git/kde-qt]]&lt;br /&gt;
* [[Getting Started/Sources/Amarok Git Tutorial]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On community.kde.org:&lt;br /&gt;
* http://community.kde.org/Sysadmin/GitKdeOrgManual&lt;br /&gt;
* http://community.kde.org/20110213_GitWorkflowAgenda&lt;br /&gt;
* http://community.kde.org/20110213_GitWorkflowAgenda/StevesIdea&lt;br /&gt;
&lt;br /&gt;
On techbase.kde.org:&lt;br /&gt;
* [[Getting Started]]&lt;br /&gt;
* [[Getting Started/Build/KDE4]]&lt;br /&gt;
* [[Getting Started/Build/KDE4.x]]&lt;br /&gt;
* [[Getting Started/Build/KDE4/Prerequisites]]&lt;br /&gt;
* [[Getting Started/Build/KDE4/Windows/subversion]]&lt;br /&gt;
* [[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts]]&lt;br /&gt;
* [[Getting_Started/Build/kdesrc-build]]&lt;br /&gt;
* [[Getting Started/Sources/Anonymous SVN]]&lt;br /&gt;
* [[Getting_Started/Sources/Using_Subversion_with_KDE]]&lt;br /&gt;
* [[Getting_Started/Set_up_KDE_4_for_development]]&lt;br /&gt;
* [[Getting_Started/Using_an_IDE_with_KDE4]]&lt;br /&gt;
* [[Policies/SVN_Commit_Policy]]&lt;br /&gt;
* [[Policies/SVN_Guidelines]]&lt;br /&gt;
* [[Development/Tools]]&lt;br /&gt;
* [[Development/Tutorials/Git/Recipes]]&lt;br /&gt;
* [[Development/Tutorials/Git/Create a patch]]&lt;br /&gt;
* [[Development/Tutorials/Git/decoding-git]]&lt;br /&gt;
* [[Projects/rekonq/Git_with_rekonq_HowTo]]&lt;br /&gt;
* [[Projects/Related/Subversion]]&lt;br /&gt;
* [[Projects/MovetoGit]]&lt;br /&gt;
* [[Projects/MoveToGit/StepsToMove]]&lt;br /&gt;
* [[Contribute/Get a SVN Account]]&lt;br /&gt;
* [[Contribute/First Steps with your KDE SVN Account]]&lt;br /&gt;
&lt;br /&gt;
There are also numerous other pages referring to &amp;quot;the KDE SVN/subversion repositories&amp;quot; which should be replaced with the generic &amp;quot;KDE code repositories&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
There are also numerous translated pages which will need to be updated once the original pages are completed.&lt;br /&gt;
&lt;br /&gt;
=== New Page Structure ===&lt;br /&gt;
&lt;br /&gt;
* [[Getting_Started]]&lt;br /&gt;
* [[Getting_Started/Build]]&lt;br /&gt;
* [[Getting_Started/Build/Environment]]&lt;br /&gt;
* [[Getting_Started/Build/Requirements]]&lt;br /&gt;
* [[Getting_Started/Build/Qt]]&lt;br /&gt;
* [[Getting_Started/Build/KdeSupport]]&lt;br /&gt;
* [[Getting_Started/Build/Windows]]&lt;br /&gt;
* [[Getting_Started/Build/Mac_OS_X]]&lt;br /&gt;
* [[Getting_Started/Run]]&lt;br /&gt;
* [[Getting_Started/Run/Shell]]&lt;br /&gt;
* [[Getting_Started/Run/Nested_Session]]&lt;br /&gt;
* [[Getting_Started/Run/Full_Session]]&lt;br /&gt;
&lt;br /&gt;
=== For Deletion ===&lt;br /&gt;
&lt;br /&gt;
The following pages can now be deleted and/or redirected:&lt;br /&gt;
* [[Development/Tutorials/Git]]&lt;br /&gt;
* [[Development/Tutorials/Git/KdeOnGit]]&lt;br /&gt;
* [[Development/Tutorials/Git/Pushing]]&lt;br /&gt;
* [[Development/Tutorials/Git/BestPractices]]&lt;br /&gt;
* [[Development/Tutorials/Git/Intermediate]]&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git</id>
		<title>Development/Git</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git"/>
				<updated>2011-04-28T20:29:32Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: /* Documentation Changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the hub page for all information about the use of Git by KDE.&lt;br /&gt;
&lt;br /&gt;
This page is a work in progress where all new Git material is being organised.  Most of these sections will eventually be moved to their own pages.  Feel free to add stuff.&lt;br /&gt;
&lt;br /&gt;
== KDE and Git ==&lt;br /&gt;
&lt;br /&gt;
This section provides details on using the KDE Git infrastructure.&lt;br /&gt;
&lt;br /&gt;
A primary resource is still http://community.kde.org/Sysadmin/GitKdeOrgManual&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Configuration ===&lt;br /&gt;
&lt;br /&gt;
How to configure Git for use with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
Please see the [[/Configuration|Git Configuration]] page.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Policies ===&lt;br /&gt;
&lt;br /&gt;
KDE policies on Git.  More generic development policies go elsewhere.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Recipes ===&lt;br /&gt;
&lt;br /&gt;
Short recipes for using Git with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
Please see the [[/Recipes|Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Tutorials ===&lt;br /&gt;
&lt;br /&gt;
More in-depth instructions in using Git.&lt;br /&gt;
&lt;br /&gt;
Please see the outdated [[Development/Tutorials/Git|KDE tutorial]] page which needs major revision.&lt;br /&gt;
&lt;br /&gt;
== External Git Resources ==&lt;br /&gt;
&lt;br /&gt;
Links to useful external sites about Git&lt;br /&gt;
&lt;br /&gt;
=== Official Documentation ===&lt;br /&gt;
&lt;br /&gt;
* http://git-scm.com/documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Git for SVN Users ===&lt;br /&gt;
&lt;br /&gt;
* http://git-scm.com/course/svn.html&lt;br /&gt;
* https://git.wiki.kernel.org/index.php/GitSvnCrashCourse&lt;br /&gt;
&lt;br /&gt;
=== Git books ===&lt;br /&gt;
&lt;br /&gt;
* [http://progit.org/book/ Pro Git] - An easy to understand book on git (CC licensed).&lt;br /&gt;
* [http://book.git-scm.com/ The git community book], also as [http://book.git-scm.com/book.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
=== Tutorials ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html The official tutorial introduction to Git]&lt;br /&gt;
* [http://www-cs-students.stanford.edu/~blynn/gitmagic/ Git Magic] - A good intro to git (in several languages!) &lt;br /&gt;
*[http://tom.preston-werner.com/2009/05/19/the-git-parable.html The Git Parable] - Essential reading if you want to truly understand git.&lt;br /&gt;
* [http://www.gitcasts.com/ Git Screencasts]&lt;br /&gt;
&lt;br /&gt;
=== Cheat Sheets ===&lt;br /&gt;
&lt;br /&gt;
* [http://cheat.errtheblog.com/s/git Quick reference]&lt;br /&gt;
* [http://zrusin.blogspot.com/2007/09/git-cheat-sheet.html Illustrated git cheat sheet]&lt;br /&gt;
&lt;br /&gt;
= Documentation Changes =&lt;br /&gt;
&lt;br /&gt;
== KDE Documentation Review ==&lt;br /&gt;
&lt;br /&gt;
=== Existing Pages For Review ===&lt;br /&gt;
&lt;br /&gt;
Existing KDE pages about Git, SVN, and/or buildinga KDE that need to be revised.  When revising pages try to split the generic development and revision control policies separate from Git specific stuff.  Do not refer to &amp;quot;the KDE Git Repository&amp;quot; but instead the &amp;quot;KDE Code Repository&amp;quot;.  Lots of small simple pages that are less daunting to newbies and can be linked to from multiple locations are preferred to massive walls of text.&lt;br /&gt;
&lt;br /&gt;
Keep:&lt;br /&gt;
* [[Development/Tutorials/Git/Basics]]&lt;br /&gt;
* [[Development/Tutorials/Git/git-svn]]&lt;br /&gt;
* [[Development/Tutorials/Git/kde-qt]]&lt;br /&gt;
* [[Getting Started/Sources/Amarok Git Tutorial]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On community.kde.org:&lt;br /&gt;
* http://community.kde.org/Sysadmin/GitKdeOrgManual&lt;br /&gt;
* http://community.kde.org/20110213_GitWorkflowAgenda&lt;br /&gt;
* http://community.kde.org/20110213_GitWorkflowAgenda/StevesIdea&lt;br /&gt;
&lt;br /&gt;
On techbase.kde.org:&lt;br /&gt;
* [[Getting Started]]&lt;br /&gt;
* [[Getting Started/Build/KDE4]]&lt;br /&gt;
* [[Getting Started/Build/KDE4.x]]&lt;br /&gt;
* [[Getting Started/Build/KDE4/Prerequisites]]&lt;br /&gt;
* [[Getting Started/Build/KDE4/Windows/subversion]]&lt;br /&gt;
* [[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts]]&lt;br /&gt;
* [[Getting_Started/Build/kdesrc-build]]&lt;br /&gt;
* [[Getting Started/Sources/Anonymous SVN]]&lt;br /&gt;
* [[Getting_Started/Sources/Using_Subversion_with_KDE]]&lt;br /&gt;
* [[Getting_Started/Set_up_KDE_4_for_development]]&lt;br /&gt;
* [[Getting_Started/Using_an_IDE_with_KDE4]]&lt;br /&gt;
* [[Policies/SVN_Commit_Policy]]&lt;br /&gt;
* [[Policies/SVN_Guidelines]]&lt;br /&gt;
* [[Development/Tools]]&lt;br /&gt;
* [[Development/Tutorials/Git/Recipes]]&lt;br /&gt;
* [[Development/Tutorials/Git/Create a patch]]&lt;br /&gt;
* [[Development/Tutorials/Git/decoding-git]]&lt;br /&gt;
* [[Projects/rekonq/Git_with_rekonq_HowTo]]&lt;br /&gt;
* [[Projects/Related/Subversion]]&lt;br /&gt;
* [[Projects/MovetoGit]]&lt;br /&gt;
* [[Projects/MoveToGit/StepsToMove]]&lt;br /&gt;
* [[Contribute/Get a SVN Account]]&lt;br /&gt;
* [[Contribute/First Steps with your KDE SVN Account]]&lt;br /&gt;
&lt;br /&gt;
There are also numerous other pages referring to &amp;quot;the KDE SVN/subversion repositories&amp;quot; which should be replaced with the generic &amp;quot;KDE code repositories&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
There are also numerous translated pages which will need to be updated once the original pages are completed.&lt;br /&gt;
&lt;br /&gt;
=== New Page Structure ===&lt;br /&gt;
&lt;br /&gt;
* [[Getting_Started]]&lt;br /&gt;
* [[Getting_Started/Build]]&lt;br /&gt;
* [[Getting_Started/Build/Environment]]&lt;br /&gt;
* [[Getting_Started/Build/Requirements]]&lt;br /&gt;
* [[Getting_Started/Build/Qt]]&lt;br /&gt;
* [[Getting_Started/Build/KdeSupport]]&lt;br /&gt;
* [[Getting_Started/Build/Windows]]&lt;br /&gt;
* [[Getting_Started/Build/Mac_OS_X]]&lt;br /&gt;
* [[Getting_Started/Run]]&lt;br /&gt;
* [[Getting_Started/Run/Shell]]&lt;br /&gt;
* [[Getting_Started/Run/Nested_Session]]&lt;br /&gt;
* [[Getting_Started/Run/Full_Session]]&lt;br /&gt;
&lt;br /&gt;
=== For Deletion ===&lt;br /&gt;
&lt;br /&gt;
The following pages can now be deleted and/or redirected:&lt;br /&gt;
* [[Development/Tutorials/Git]]&lt;br /&gt;
* [[Development/Tutorials/Git/KdeOnGit]]&lt;br /&gt;
* [[Development/Tutorials/Git/Pushing]]&lt;br /&gt;
* [[Development/Tutorials/Git/BestPractices]]&lt;br /&gt;
* [[Development/Tutorials/Git/Intermediate]]&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Archive:Development/Tutorials/Git/Intermediate</id>
		<title>Archive:Development/Tutorials/Git/Intermediate</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Archive:Development/Tutorials/Git/Intermediate"/>
				<updated>2011-04-28T20:28:45Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: Replaced content with '{{warning|This page is obsolete. Proceed to Development/Git. }}'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{warning|This page is obsolete. Proceed to [[Development/Git]]. }}&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/Git/git-svn</id>
		<title>Development/Tutorials/Git/git-svn</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/Git/git-svn"/>
				<updated>2011-04-28T20:28:00Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{warning|This page is yet to be reviewed for changes required by the migration to Git.  Information and commands on this page may no longer be valid and should be used with care. Please see the [[Development/Git|KDE Git hub page]] for more details. }}&lt;br /&gt;
&lt;br /&gt;
More and more KDE developers are using git-svn to contribute to KDE's SVN repository. Git-svn allows you to create a local git repository based on an existing svn repository. This allows you to use some (but not all) of git's useful features. It's very useful if you want to commit code on an airplane. ;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Important notes:&amp;lt;/strong&amp;gt;&lt;br /&gt;
* Please make sure to use Git 1.5.4 or better when you are interfacing with SVN. Older versions of git-svn have many issues you might run into otherwise.&lt;br /&gt;
* git-svn is not able to track most of the svn:properties yet. So, svn:externals are not fetched.&lt;br /&gt;
&lt;br /&gt;
This page explains how to fetch [http://edu.kde.org kdeedu] trunk from and import it into Git. It will then demonstrate how to make use of Git's features and sync with SVN again.&lt;br /&gt;
&lt;br /&gt;
{{Box|Further reading|If terms like &amp;quot;rebase&amp;quot; and &amp;quot;branch&amp;quot; do not mean anything to you, you should read a tutorial on general Git usage and workflows first, e.g. the [[Development/Tutorials/Git/Basics|Git Basics]] page on this wiki.}}&lt;br /&gt;
&lt;br /&gt;
== Checking out ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;svn checkout&amp;quot; command becomes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Anonymous access (if you do not have a KDE SVN account)&lt;br /&gt;
git svn init svn://anonsvn.kde.org/home/kde/trunk/KDE/kdeedu&lt;br /&gt;
# For those using HTTPS authentication:&lt;br /&gt;
git svn init https://svn.kde.org/home/kde/trunk/KDE/kdeedu&lt;br /&gt;
# For those using SSH authentication:&lt;br /&gt;
git svn init svn+ssh://USERNAME@svn.kde.org/home/kde/trunk/KDE/kdeedu&lt;br /&gt;
# Further steps which are common to all methods&lt;br /&gt;
git svn fetch -r 1000000&lt;br /&gt;
git svn fetch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that, unlike &amp;quot;svn checkout&amp;quot;, &amp;quot;git svn init&amp;quot; does not create the directory that contains the checkout. Instead, it behaves similar to &amp;quot;git init&amp;quot;: It expects you to create this base directory yourself and call &amp;quot;git svn init&amp;quot; inside this directory.&lt;br /&gt;
&lt;br /&gt;
The number given to &amp;quot;git svn fetch&amp;quot; on the second-to-last line is the first revision that will be fetched. At this point, the differences between SVN and Git become apparent. While &amp;quot;svn checkout&amp;quot; only reads the current state of the repository, Git wants to read the whole history. But KDE's repository is big. Very big. In fact, it's exorbitantly huge.&lt;br /&gt;
&lt;br /&gt;
To reduce unnecessary load on KDE's server infrastructure, we instruct git-svn to fetch only those revisions that are older than revision no. 1000000, which is a sensible default at the time of this writing (December 2009, current revision ~1060000). The current SVN revision can be found at http://websvn.kde.org (take a look at the line &amp;quot;Directory revision&amp;quot; just below the header). You can also choose exactly the current SVN revision with &amp;quot;-r HEAD&amp;quot;, if you're absolutely sure that you will not be needing any history (&amp;quot;git log&amp;quot;, &amp;quot;git blame&amp;quot; and Co. might then not behave as expected).&lt;br /&gt;
If you're using an older version of git-svn, you may need to specify a revision number that was a commit to the code you're checking out.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
The equivalent to &amp;quot;svn update&amp;quot; becomes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git svn rebase&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
You'll usually do this on the master branch. If you're using multiple branches, you might want to rebase them on the master after the update.&lt;br /&gt;
&lt;br /&gt;
== Commiting ==&lt;br /&gt;
&lt;br /&gt;
After sending your commits to the svn server, git-svn will download all new commits (essentially running 'git svn rebase').&lt;br /&gt;
This rebase won't work if you have local, uncommitted changes. If that becomes inconvenient, you should use [[Development/Git/Recipes#Stashing_Changes|git stash]].&lt;br /&gt;
&lt;br /&gt;
Usually, you will be working in feature branches. When you want to commit them to SVN, you will rebase them onto master or merge them into master, and then do the following from the master branch:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git svn dcommit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Git will create one SVN commit for each commit in your Git repository. To create just &amp;lt;b&amp;gt;one&amp;lt;/b&amp;gt; commit for the whole merge of a branch into the master branch use the &amp;quot;--squash&amp;quot; feature like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git merge --squash mybranch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[TODO: apparently --no-ff is better than squash but it has.. quirks]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now that you've got a git-svn repository set up, you can read about [[Development/Tutorials/Git/Basics|Git Basics]] if you haven't already.&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Archive:Development/Tutorials/Git/BestPractices</id>
		<title>Archive:Development/Tutorials/Git/BestPractices</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Archive:Development/Tutorials/Git/BestPractices"/>
				<updated>2011-04-28T20:25:33Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: Deleted as discussed on k-c-d.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{warning|This page is obsolete. Proceed to [[Development/Git]]. }}&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/Git/git-svn</id>
		<title>Development/Tutorials/Git/git-svn</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/Git/git-svn"/>
				<updated>2011-04-28T20:24:29Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{warning|This page is yet to be reviewed for changes required by the migration to Git.  Information and commands on this page may no longer be valid and should be used with care. Please see the [[Development/Git|KDE Git hub page]] for more details. }}&lt;br /&gt;
&lt;br /&gt;
More and more KDE developers are using git-svn to contribute to KDE's SVN repository. Git-svn allows you to create a local git repository based on an existing svn repository. This allows you to use some (but not all) of git's useful features. It's very useful if you want to commit code on an airplane. ;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Important notes:&amp;lt;/strong&amp;gt;&lt;br /&gt;
* Please make sure to use Git 1.5.4 or better when you are interfacing with SVN. Older versions of git-svn have many issues you might run into otherwise.&lt;br /&gt;
* git-svn is not able to track most of the svn:properties yet. So, svn:externals are not fetched.&lt;br /&gt;
&lt;br /&gt;
This page explains how to fetch [http://edu.kde.org kdeedu] trunk from and import it into Git. It will then demonstrate how to make use of Git's features and sync with SVN again.&lt;br /&gt;
&lt;br /&gt;
{{Box|Further reading|If terms like &amp;quot;rebase&amp;quot; and &amp;quot;branch&amp;quot; do not mean anything to you, you should read a tutorial on general Git usage and workflows first, e.g. the [[Development/Tutorials/Git/Basics|Git Basics]] page on this wiki.}}&lt;br /&gt;
&lt;br /&gt;
== Checking out ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;svn checkout&amp;quot; command becomes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Anonymous access (if you do not have a KDE SVN account)&lt;br /&gt;
git svn init svn://anonsvn.kde.org/home/kde/trunk/KDE/kdeedu&lt;br /&gt;
# For those using HTTPS authentication:&lt;br /&gt;
git svn init https://svn.kde.org/home/kde/trunk/KDE/kdeedu&lt;br /&gt;
# For those using SSH authentication:&lt;br /&gt;
git svn init svn+ssh://USERNAME@svn.kde.org/home/kde/trunk/KDE/kdeedu&lt;br /&gt;
# Further steps which are common to all methods&lt;br /&gt;
git svn fetch -r 1000000&lt;br /&gt;
git svn fetch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that, unlike &amp;quot;svn checkout&amp;quot;, &amp;quot;git svn init&amp;quot; does not create the directory that contains the checkout. Instead, it behaves similar to &amp;quot;git init&amp;quot;: It expects you to create this base directory yourself and call &amp;quot;git svn init&amp;quot; inside this directory.&lt;br /&gt;
&lt;br /&gt;
The number given to &amp;quot;git svn fetch&amp;quot; on the second-to-last line is the first revision that will be fetched. At this point, the differences between SVN and Git become apparent. While &amp;quot;svn checkout&amp;quot; only reads the current state of the repository, Git wants to read the whole history. But KDE's repository is big. Very big. In fact, it's exorbitantly huge.&lt;br /&gt;
&lt;br /&gt;
To reduce unnecessary load on KDE's server infrastructure, we instruct git-svn to fetch only those revisions that are older than revision no. 1000000, which is a sensible default at the time of this writing (December 2009, current revision ~1060000). The current SVN revision can be found at http://websvn.kde.org (take a look at the line &amp;quot;Directory revision&amp;quot; just below the header). You can also choose exactly the current SVN revision with &amp;quot;-r HEAD&amp;quot;, if you're absolutely sure that you will not be needing any history (&amp;quot;git log&amp;quot;, &amp;quot;git blame&amp;quot; and Co. might then not behave as expected).&lt;br /&gt;
If you're using an older version of git-svn, you may need to specify a revision number that was a commit to the code you're checking out.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
The equivalent to &amp;quot;svn update&amp;quot; becomes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git svn rebase&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
You'll usually do this on the master branch. If you're using multiple branches, you might want to rebase them on the master after the update.&lt;br /&gt;
&lt;br /&gt;
== Commiting ==&lt;br /&gt;
&lt;br /&gt;
After sending your commits to the svn server, git-svn will download all new commits (essentially running 'git svn rebase').&lt;br /&gt;
This rebase won't work if you have local, uncommitted changes. If that becomes inconvenient, you should use [[Development/Tutorials/Git/Intermediate|git stash]].&lt;br /&gt;
&lt;br /&gt;
Usually, you will be working in feature branches. When you want to commit them to SVN, you will rebase them onto master or merge them into master, and then do the following from the master branch:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git svn dcommit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Git will create one SVN commit for each commit in your Git repository. To create just &amp;lt;b&amp;gt;one&amp;lt;/b&amp;gt; commit for the whole merge of a branch into the master branch use the &amp;quot;--squash&amp;quot; feature like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git merge --squash mybranch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[TODO: apparently --no-ff is better than squash but it has.. quirks]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now that you've got a git-svn repository set up, you can read about [[Development/Tutorials/Git/Basics|Git Basics]] if you haven't already.&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials_(zh_CN)</id>
		<title>Development/Tutorials (zh CN)</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials_(zh_CN)"/>
				<updated>2011-04-28T20:23:10Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar (zh_CN)|Development/Tutorials}}&lt;br /&gt;
&lt;br /&gt;
教程是学习KDE，发现KDE都能为你做哪些事以及如何做的捷径。下面是当前可用的'''KDE4'''教程列表。关于KDE3和KDE2的材料可以在本页的底部找到。&lt;br /&gt;
&lt;br /&gt;
== KDE4编程介绍 ==&lt;br /&gt;
你是否对用KDE4写程序感兴趣呢？这个系列教程的目的是让那些对KDE编程没有任何概念的新手能够入门。&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/First program (zh_CN)|世界你好]]&lt;br /&gt;
:''本教程介绍了KDE4编程的最基本的知识''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using KXmlGuiWindow (zh_CN)|创建主窗口]]&lt;br /&gt;
:''本教程将向你展示关于应用程序最重要的部分──主窗口──的魔术。''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using KActions (zh_CN)|使用KActions]]&lt;br /&gt;
:''如何向菜单和工具栏中添加动作。''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Saving and loading (zh_CN)|保存与载入]]&lt;br /&gt;
:''介绍KIO类库，为应用程序增加加载，存储的功能。''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KCmdLineArgs (zh_CN)|命令行参数]]&lt;br /&gt;
:''在命令行用文字编辑器打开指定文件。''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 基础知识 ==&lt;br /&gt;
;[[Development/Tutorials/KDE4 Porting Guide|移植你的程序]]&lt;br /&gt;
:''帮助你将应用程序从Qt3/KDE3移植到Qt4/KDE4''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/CMake_(zh_CN)|CMake介绍]]&lt;br /&gt;
:''介绍如何使用KDE4的构建系统CMake。''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Common Programming Mistakes|常见编程错误]]&lt;br /&gt;
:''介绍各种在开发Qt和KDE应用程序时常见的错误，以及如何避免它们。''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using Qt Designer|使用Qt Designer构建用户界面]]&lt;br /&gt;
:''如何使用designer创建UI文件，以及如何将它们集成到KDE程序中。''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Creating Libraries_(zh_CN)|把代码加到库中]]&lt;br /&gt;
:''如何把类库加到联编系统以及如何准备源代码。''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Session_Management_(zh_CN)|会话管理]]&lt;br /&gt;
:''让程序了解X会话''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 测试与调试 ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Debugging_(zh_CN)|调试你的应用程序]]&lt;br /&gt;
:''介绍在你调试KDE应用程序时可以采用的工具、技术和技巧。''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Unittests|使用QTestLib为Qt4与KDE4编写单元测试]] ([http://developer.kde.org/documentation/tutorials/writingunittests/writingunittests.html 原始出处])&lt;br /&gt;
:''[mailto:bradh@frogmouth.net Brad Hards]的教程，介绍了如何使用QTestLib编写单元测试。它是一个基于例子的教程，仍在开发中。''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Code_Checking|检测错误代码的半自动方法]]&lt;br /&gt;
:''介绍了一些在KDE代码中检测错误代码的技术''&lt;br /&gt;
&lt;br /&gt;
== 使用KConfig管理配置数据 ==&lt;br /&gt;
;[[Development/Tutorials/KConfig|KConfig介绍]]&lt;br /&gt;
:''概要介绍了KConfig相关的类，以及如何在你的应用程序代码中使用它们''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using KConfig XT|使用KConfig XT]]&lt;br /&gt;
:''关于如何有效使用KConfig XT框架的教程''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Updating KConfig Files|更新KConfig文件]]&lt;br /&gt;
:''关于如何编写一个更新脚本，以保证你程序的配置文件格式与用户已使用的现有配置文件一致的教程''&lt;br /&gt;
&lt;br /&gt;
== 服务：应用程序和插件 ==&lt;br /&gt;
;[[Development/Tutorials/Services/Introduction|服务框架介绍]]&lt;br /&gt;
:''关于KDE中的服务框架，以及它们向开发人员提供了哪些功能的概述。覆盖了对系统配置文件缓存(SyCoCa)、源数据文件以及用索引信息可以做哪些事情的介绍''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Services/Traders|使用Trader查询来查找服务]]&lt;br /&gt;
:''如何使用Trader查询语法来查找那些在SyCoCa中被索引了的服务，如插件或者mime类型等''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Services/Plugins|使用KService创建和载入模块]]&lt;br /&gt;
:''学习如何使用KService，以一种方便且易于扩展方式来完成诸如定义自定义插件类型、查找已安装的插件(包括第三方插件)、以及载入插件等任务。''&lt;br /&gt;
&lt;br /&gt;
== 本地化 ==&lt;br /&gt;
见 [[Localization|本地化入口]].&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Localization/Unicode|Unicode介绍]]&lt;br /&gt;
:''对Unicode和如何在KDE应用程序中处理Unicode的一个简要说明。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n|编写考虑到本地化需要的应用程序]]&lt;br /&gt;
:''这篇教程内容涵盖了什么是本地化、为什么本地化很重要和如何确定您的应用程序已经为本地化做好准备。这是一份所有应用程序开发者的必读说明。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Mistakes|避免常见的本地化陷阱]]&lt;br /&gt;
:''通常有许多普遍易犯的错误阻碍应用程序被正确地本地化。这篇教程阐述了什么是错误的方式，并告诉您如何简单地避免这些错误。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/Building KDE's l10n Module|构建KDE本地化模块]]&lt;br /&gt;
:''对那些开发KDE主应用库的人来说，联编和安装支持KDE的本地化的语言（ l10n ）模块是一个好主意。这样做可以让您测试您的应用程序在另一种语言并且迅速发现什么地方出问题了。本教程告诉我们如何做到这一点。&lt;br /&gt;
''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Build Systems|将i18n合并到构建系统中]]&lt;br /&gt;
:''一旦您已准备好进行本地化工作，下一步是确保翻译文件是自动创建并且是不断更新的。本教程涵盖了必要CMakeFiles.txt流程 以及您的应用程序中所产生的信息在发布时的流程。&lt;br /&gt;
''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Challenges|常见的i18n挑战和解决方案]]&lt;br /&gt;
:''本教程涵盖你所可能遇到的各种挑战，诸如陷入如翻译手册时存在源代码以外的资料，合并和处理独立PO文件，处理冻结的文件，处理英语以外的语言和创建独立发布版本或者在KDE模块间转移一些应用。&lt;br /&gt;
''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n_Semantics|消息的语义标记]]&lt;br /&gt;
:''为了应用程序中保证一贯的表述，并使得消息更有意义，用于标示语义标记翻译可使用KUIT系统。此教程说明本系统如何工作的。&lt;br /&gt;
''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Krazy|自动化i18n代码检查]]&lt;br /&gt;
:''Krazy代码检查器扫描KDE的代码并报告常见的i18n错误。''&lt;br /&gt;
&lt;br /&gt;
== 文档 ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/API_Documentation|API文档]]&lt;br /&gt;
:''本教程告诉我们如何正确对应用程序接口（API）进行建档''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Man_Pages|Man Pages]]&lt;br /&gt;
:''编写产生参考手册。''&lt;br /&gt;
&lt;br /&gt;
== 应用程序自动化及脚本 ==&lt;br /&gt;
&lt;br /&gt;
=== D-Bus ===&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Introduction|D-Bus介绍]]&lt;br /&gt;
:''从一个程序开发员的角度对D－Bus作一个单刀直入的介绍，教程里讲述了D－Bus是什么以及如何人在应用程序中使用。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Accessing Interfaces|访问D-Bus接口]]&lt;br /&gt;
:''手把手指导如何用QtDBus调用D－Bus并连接到D-Bus信号。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Intermediate_D-Bus|中级D-Bus编程]]&lt;br /&gt;
:''利用QtBus的一些技巧，可以用来解决现实生活中的一些问题。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Creating Interfaces|创建D-Bus接口]]&lt;br /&gt;
:''如何创建和定制D－Bus的接口来增强你的应用程序。教程包含了产生XML描述，运行时实例化接口，用CMake建立联编系统。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Autostart Services|D-Bus自动启动服务]]&lt;br /&gt;
:''如何把你的程序改装为一个D-Bus自启动的服务。D-Bus的这个功能也被成为&amp;quot;D-Bus自启动服&amp;quot;, 他将确保即便你没有启动你的程序，D－Bus后台程序也会在需要时把它起起来。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Porting_to_D-Bus|从DCOP移植到D-Bus]]&lt;br /&gt;
: ''从DCOP向D-BUS 移植指导手册。''&lt;br /&gt;
&lt;br /&gt;
=== Konqueror ===&lt;br /&gt;
; [[Development/Tutorials/Creating Konqueror Service Menus|创建Konqueror服务菜单]]&lt;br /&gt;
:''本教程将讲述如何在Konqueror's浮动菜单中创建特定mimetype的动作 (aka &amp;quot;servicemenus&amp;quot;).''&lt;br /&gt;
&lt;br /&gt;
=== Kross ===&lt;br /&gt;
; [[Development/Tutorials/Kross/Introduction|Kross介绍]]&lt;br /&gt;
:''介绍Kross脚本框架.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Hello_World|世界你好]]&lt;br /&gt;
:''Kross的第一段代码。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Call_Functions_in_Kross|在Kross调用其它功能]]&lt;br /&gt;
:''简单演示如何调用脚本功能''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Connecting_Signals_and_slots_in_Kross|链接Kross中的信号和槽]]&lt;br /&gt;
:''简单演示如何把对象信号和脚本的槽相连。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Scripts-as-Plugins|使用Kross脚本编写插件]]&lt;br /&gt;
:''本教程将手把手的讲述如何把脚本作为插件集成到KDE应用程序中。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Scripts-as-KPlugins|以KPlugins方式加载Kross脚本]]&lt;br /&gt;
:''本教程将手把手的讲述如何以KPlugins方式加载Kross脚本。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Script-Actions|为程序菜单添加脚本动作 ]]&lt;br /&gt;
:''简单演示如何在程序菜单中执行脚本。''&lt;br /&gt;
&lt;br /&gt;
=== KOffice Plugin Tutorials===&lt;br /&gt;
; [[Development/Tutorials/KOffice Overview|KOffice概览]]&lt;br /&gt;
:''本文介绍不同KOffice的插件类型并且讲述了各自的用途和强项。'' 对KOffice插件的新手来说，这是个很好的切入点。&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Write a Flake Plugin|创建KOffice Flake插件]]&lt;br /&gt;
:''讲述如何创建一个KOffice的插件，同时用Flake把你的内容嵌入到ODF文档里去。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/KWord Scripting|编写KWord脚本]]&lt;br /&gt;
:''在KRoss框架内使用Python，Ruby或JavaScript为KWord写插件等。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/KSpread Scripting|编写KSpread脚本]]&lt;br /&gt;
:''在KRoss框架内使用Python，Ruby或JavaScript为KSpread写插件等。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Krita Scripting|编写Krita脚本]]&lt;br /&gt;
:''在KRoss框架内使用Python，Ruby或JavaScript为Krita写插件等。''&lt;br /&gt;
&lt;br /&gt;
=== SuperKaramba ===&lt;br /&gt;
; [[Development/Tutorials/SuperKaramba|SuperKaramba教程]]&lt;br /&gt;
:''全面介绍SuperKaramba，主题文件和Python, Ruby和JavaScript脚本.''&lt;br /&gt;
&lt;br /&gt;
=== System Activity ===&lt;br /&gt;
&lt;br /&gt;
: [[Development/Tutorials/SystemActivity/Scripting|Writing script actions for the process's context menu]]&lt;br /&gt;
:''This tutorial shows how to add a context menu action to show custom information about a process.&lt;br /&gt;
&lt;br /&gt;
== 插件和KParts ==&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Writing kontact plugins|开发Kontact插件]]:&lt;br /&gt;
''Kontact 插件就是KParts. 此教程说明如何您可以开发一个。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Using KParts|使用KParts]]:''如何在应用窗口中加载KPart。''&lt;br /&gt;
&lt;br /&gt;
== 搜索与元数据 ==&lt;br /&gt;
&lt;br /&gt;
=== Strigi ===&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Writing file analyzers|编写文件分析器]]&lt;br /&gt;
:''文件分析器从文件或对话框抽取信息。这样产生的数据也会被用于文件搜索。KDE4允许对一个文件使用多个分析器。本教程讲述如何编写一个新的分析器。''&lt;br /&gt;
&lt;br /&gt;
=== [http://nepomuk.kde.org Nepomuk] ===&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/Quickstart|Nepomuk 快速入门]]&lt;br /&gt;
:''如何快速上手使用Nepomuk。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/RDFIntroduction|Nepomuk中的RDF和本体]]&lt;br /&gt;
:''介绍RDF和本体在Nepomuk的应用。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/Resources|用Nepomuk处理资源]]&lt;br /&gt;
:''Nepomuk是KDE的一套类库，用它可以方便的存取Nepomuk系统中的元数据。教授如何在程序中创建和读取Nepomuk系统中的元数据。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/ResourceGenerator|使用Nepomuk资源产生器]]&lt;br /&gt;
:''Nepomuk包括一个资源产生器，用于处理元数据 。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/AdvancedQueries|高级查询]]&lt;br /&gt;
:''Nepomuk的真正用途在于对数据源的查询结果的掌控。本教程介绍如何用Nepomuk进行语意查询和全文查询。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/NepomukServer|Nepomuk服务器和Nepomuk系统架构]]&lt;br /&gt;
:''Nepomuk服务器在有Nepomuk主要数据仓库并且可以通过Soprano API直接存取。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/NepomukServices|Nepomuk服务]]&lt;br /&gt;
:''Nepomuk服务器管理一系列Nepomuk服务。''&lt;br /&gt;
&lt;br /&gt;
:* [[Development/Tutorials/Metadata/Nepomuk/StorageService|存储服务]] ''这也许是它最重要的服务了，采用[http://soprano.sourceforge.net Soprano]装载Nepomuk的数据仓库。''&lt;br /&gt;
&lt;br /&gt;
:* [[Development/Tutorials/Metadata/Nepomuk/OntologyLoaderService|本体加载]] ''确保安装的本体信息如RDF, RDFS, NRL, 或Xesam都已加载到存储仓库里了。''&lt;br /&gt;
&lt;br /&gt;
:* [[Development/Tutorials/Metadata/Nepomuk/FileWatchService|文件监视服务]] ''监视文件系统，一旦有变化，即时更新Nepomuk的文件资源路径和URI''&lt;br /&gt;
&lt;br /&gt;
:* [[Development/Tutorials/Metadata/Nepomuk/StrigiService|Strigi服务]] ''控制Strigi，文件索引工具，它从文件中抽取元数据并把它存储到数据仓库中。''&lt;br /&gt;
&lt;br /&gt;
:* [[Development/Tutorials/Metadata/Nepomuk/QueryService|查询服务]] ''提供持久查询文件夹。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/TipsAndTricks|Nepomuk Tips and Tricks]]&lt;br /&gt;
:''A set of tips and tricks for development with Nepomuk and Soprano. This is a must-read if you intend to use Nepomuk in your application or hack on it directly.''&lt;br /&gt;
&lt;br /&gt;
== 硬件发现(Solid) ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Solid_Tutorials|Solid介绍]]&lt;br /&gt;
:''介绍使用Solid发现硬件以及如何与KDE程序交互。''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Solid_Network_Tutorial|访问网络信息]]&lt;br /&gt;
:''如何用Solid系统获取网络信息''&lt;br /&gt;
&lt;br /&gt;
== 特权程序(PolicyKit) ==&lt;br /&gt;
; [[Development/Tutorials/PolicyKit/Introduction|Introduction to PolicyKit]]&lt;br /&gt;
:''简单介绍PolicyKit是什么，它是如何在程序需要超级用户权限或其它认证时起作用的。''&lt;br /&gt;
; [[Development/Tutorials/PolicyKit/Helper_HowTo|利用caller-helper模式以root用户权限操作]]&lt;br /&gt;
:''本教程讲述如何在程序中方便的以root用户执行一些操作（用户有相应授权）。PolicyKit和caller-helper的使用是由一定技巧的。''&lt;br /&gt;
; [[Development/Tutorials/PolicyKit/KCM_HowTo|在KCM模块中获取root权限]]&lt;br /&gt;
:''本教程讲述如何以root用户来创建一个可以保存设置的KCModules。''&lt;br /&gt;
&lt;br /&gt;
== 多媒体(Phonon) ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Phonon/Introduction|Phonon]]&lt;br /&gt;
:''如何使用多媒体的应用程序接口（API）''&lt;br /&gt;
&lt;br /&gt;
== Plasma ==&lt;br /&gt;
&lt;br /&gt;
请见[[Development/Tutorials/Plasma_(zh_CN)|Plasma 教学]]&lt;br /&gt;
&lt;br /&gt;
== 通讯 (Decibel) ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Decibel/GettingStarted|Decibel入门]]&lt;br /&gt;
:''如何设置Decibel.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Decibel/Handling_TextChannels|处理文字通道（TextChannels）]]&lt;br /&gt;
:''本教程通过如何编写一个简单的聊天程序介绍文字通道（TextChannels）的处理方法。''&lt;br /&gt;
&lt;br /&gt;
== 个人信息管理(Akonadi) ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Akonadi/Resources|开发Akonadi 资源]]&lt;br /&gt;
:''Akonadi Resources是一个代理程序，在Akonadi和后台程序间（文件，服务器，等）传送PIM数据。''&lt;br /&gt;
&lt;br /&gt;
== Kate / Kwrite ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Kate/KTextEditor Plugins|KTextEditor插件入门]]&lt;br /&gt;
:''创建你第一个插件''&lt;br /&gt;
&lt;br /&gt;
== KDevelop ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/KDevelop-PG-Qt_Introduction|KDevelop-PG-Qt Introduction]]&lt;br /&gt;
:''Information on the KDevelop parser generator, useful for language plugins.''&lt;br /&gt;
&lt;br /&gt;
== 打印 ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Printing Hello World|世界你好]]&lt;br /&gt;
:''介绍KDE打印系统''&lt;br /&gt;
&lt;br /&gt;
;TODO 打印对话框&lt;br /&gt;
:''使用KDE打印对话框''&lt;br /&gt;
&lt;br /&gt;
== kioslaves ==&lt;br /&gt;
* [[Development/Tutorials/KIO Slaves/Using KIO Slaves in your Program|应用 kioslaves]]&lt;br /&gt;
* [[Development/Tutorials/KIO Slaves/Hello World|kioslave简单例程]]&lt;br /&gt;
&lt;br /&gt;
== 获取热点新材料 ==&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/K_Hot_New_Stuff2|获取热点新材料 2]]&lt;br /&gt;
:''如何使用KHotNewStuff2。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Introduction to Get Hot New Stuff|获取热点新材料入门]]&lt;br /&gt;
:''介绍一个对开发员友好的网络更新系统，KDE程序可以在运行时以一种友好的方式获取最新运行数据。''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KNewStuffSecure|KNewStuff安全项]] ([http://developer.kde.org/documentation/tutorials/knewstuffsecure/index.html 原文链接])&lt;br /&gt;
:''如何以另一种方法使用资源(KDE 3.4 及更新).''  由 Andr&amp;amp;#225;s Mantia &amp;amp;lt;amantia@kde.org&amp;amp;gt;开发.&lt;br /&gt;
&lt;br /&gt;
== Goya ==&lt;br /&gt;
; [[Development/Tutorials/Introduction to Goya usage|Goya使用简介]]&lt;br /&gt;
:''介绍Goya子系统应用, 让你轻易的为物品视图添加图形并把他们产生的时间链接到你得处理代码上，从而使它们成为真正的图形应用。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Introduction to Goya usage 2|Goya的使用(第二部分)]]&lt;br /&gt;
:''教程第二部分,加了些复杂的例程。''&lt;br /&gt;
&lt;br /&gt;
== 快速应用程序开发(RAD) ==&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
;[http://www.learningpython.com/2008/09/20/an-introduction-to-pyqt/ PyQt介绍]&lt;br /&gt;
:''初学者''&lt;br /&gt;
&lt;br /&gt;
;[http://lateral.netmanagers.com.ar/stories/BBS47.html PyQt by Example]&lt;br /&gt;
:''介绍PyQt''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Languages/Python/PyKDE_WebKit_Tutorial|PyKDE WebKit Tutorial]]&lt;br /&gt;
:''PyKDE的浏览器''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Python introduction to signals and slots|101 signals 与slots介绍]]&lt;br /&gt;
:''对QT信号与槽架构的简单介绍''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Languages/Python/PyKDE_DBus_Tutorial|PyKDE DBus Tutorial]]&lt;br /&gt;
:''介绍如何使用PyKDE来链接D-BUS通讯。''&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
;[http://developer.kde.org/language-bindings/ruby/kde3tutorial/index.html KDE Ruby Korundum教程]&lt;br /&gt;
:''Ruby版的Antonio Larrosa Jim&amp;amp;eacute;nez's KDE教程，由Richard Dale开发。详见[[Development/Languages/Ruby (zh CN)|Ruby开发者]]，内有Qt教程和其它信息。''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Qt4_Ruby_Tutorial_(zh_CN)|Qt4 Ruby教程]]&lt;br /&gt;
:''Nokia的Ruby Qt教程。''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Plasma/RubyApplet|用Ruby创建Plasma小程序]]&lt;br /&gt;
:''介绍如何利用Ruby创建Plasma小程序。''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Developing_Qt4_Applications_using_Qt_Designer_and_Ruby_on_Kubuntu|在 Kubuntu 使用Qt Designer 和 Ruby 开发 Qt4 应用程序]]&lt;br /&gt;
:''本教学从头开始展示如何使用 Qt Designer 设计一个简单的用户接口，然后把产生的 widget 使用在 Qt Ruby 应用程序。''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Languages/Ruby/Ruby-Qt/KDE_Book|Ruby-Qt/KDE Book]]&lt;br /&gt;
:''There is also an approach to create an Ruby-Qt/KDE Book under a free license. The content will be created in this wiki.''&lt;br /&gt;
&lt;br /&gt;
=== Shell ===&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Shell_Scripting_with_KDE_Dialogs|使用KDE对话框进行脚本编程]] ([http://developer.kde.org/documentation/tutorials/kdialog/t1.html 原文链接]) &lt;br /&gt;
:''[mailto:bradh@frogmouth.net Brad Hards]介绍如何在脚本中使用KDE对话框Kdialog。其中有实例和教程。''&lt;br /&gt;
&lt;br /&gt;
== 图形编程 ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Graphics/Performance|QPainter性能]]&lt;br /&gt;
:''对使用QPainter导致性能影响的一些常见错误进行介绍''&lt;br /&gt;
&lt;br /&gt;
== 使用KDE游戏库 ==&lt;br /&gt;
;[[Development/Tutorials/Games/KStandardGameAction| KStandardGameAction]]&lt;br /&gt;
:''用libkdegames开发符合KDE游戏标准的游戏。''&lt;br /&gt;
;[[Development/Tutorials/Games/Highscores| 排行榜]]&lt;br /&gt;
:''在程序中实现一个简单的排行榜''&lt;br /&gt;
;[[Development/Tutorials/Games/Theme Selector| 主题选择器]]&lt;br /&gt;
:''使用libkdegames主题选择对话框。''&lt;br /&gt;
;[[Development/Tutorials/Games/Palapeli Patterns| Palapeli模式]]&lt;br /&gt;
:''为Palapeli创建一种模式''&lt;br /&gt;
&lt;br /&gt;
=== KGLEngine ===&lt;br /&gt;
;[[Development/Tutorials/Games/kglengine/kglengine-simpleBox| 安装和开发首个KGLItem]]&lt;br /&gt;
:''开始使用kglengine''&lt;br /&gt;
;[[Development/Tutorials/Games/kglengine/kglengine-motion| 物品移动]]&lt;br /&gt;
:''如何移动kglitem''&lt;br /&gt;
;[[Development/Tutorials/Games/kglengine/kglengine-collision| 冲突发现]]&lt;br /&gt;
:''如何发现冲突和交互。''&lt;br /&gt;
;[[Development/Tutorials/Games/kglengine/kglengine-texture| 材质和色彩]]&lt;br /&gt;
:''为你的创作添加材质和色彩。''&lt;br /&gt;
;[[Development/Tutorials/Games/kglengine/kglengine-effects| 颗粒和阴影效果]]&lt;br /&gt;
:''添加特效''&lt;br /&gt;
;[[Development/Tutorials/Games/KGLEngine2d| kglpong]]&lt;br /&gt;
:''创建一个pong''&lt;br /&gt;
&lt;br /&gt;
=== KALEngine ===&lt;br /&gt;
;[[Development/Tutorials/Games/KALEngine| 播放声音]]&lt;br /&gt;
:''在KALEngine中用openAL开发游戏中的声响效果。''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Games/KALEngine-music| 播放音乐]]&lt;br /&gt;
:''利用KALEngine播放流音乐''&lt;br /&gt;
&lt;br /&gt;
== 使用KDE PIM类库==&lt;br /&gt;
;[[Development/Tutorials/PIM/ical| iCalendar功能]]&lt;br /&gt;
:''利用kcal来操作iCalendar文件。''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 其它教程 ==&lt;br /&gt;
&lt;br /&gt;
=== 2D绘图(KPlotWidget) ===&lt;br /&gt;
;[[Development/Tutorials/KPlotWidget|使用KDE数据绘制widget]]&lt;br /&gt;
:''本教程介绍了KPlotWidget, 它可以被用来开发二维数据打印。他介绍了一些简单应用(包括添加修改数据集，定制打印坐标和标签)，以及一些高级定制化(包括如何通过扩展子类来扩展图形界面)。''&lt;br /&gt;
&lt;br /&gt;
=== 拼写与语法检查 ===&lt;br /&gt;
;[[Development/Tutorials/Sonnet/SonnetTutorial|在KDE应用程序中添加拼写或语法检查]]&lt;br /&gt;
:''本教程介绍了Sonnet，以及如何使用它来为你的KDE程序添加语言检查. Sonnet的辅助功能将在另外一个教程中介绍。''&lt;br /&gt;
&lt;br /&gt;
=== 像素图缓存(KPixmapCache) ===&lt;br /&gt;
;[[Development/Tutorials/KPixmapCache|使用KDE像素图缓存]]&lt;br /&gt;
:''本教程讲述如何用KPixmapCache来缓存从矢量数据（SVG）或其他数据源产生的点阵图。''&lt;br /&gt;
&lt;br /&gt;
=== 使用MarbleWidget (Marble) ===&lt;br /&gt;
;[[Development/Tutorials/MarbleWidget|Using MarbleWidget]]&lt;br /&gt;
:''本教程告诉我们如何在我们的程序中使用Marble Widget。''&lt;br /&gt;
&lt;br /&gt;
=== 用本地SCM开发KDE ===&lt;br /&gt;
;[[Development/Git|Using Git to develop for KDE]]&lt;br /&gt;
:''本教程告诉我们如何用GIT作KDE开发。''&lt;br /&gt;
&lt;br /&gt;
=== 实现KSysGuard探测器并添加绑定 ===&lt;br /&gt;
;[[Development/Tutorials/Sensors]]&lt;br /&gt;
:''本教程讲述如何编写KSysGuard探测器并如何把它链接到SysTray。''&lt;br /&gt;
Runners&lt;br /&gt;
&lt;br /&gt;
=== 将一个程序从 KSystemTrayIcon 转换到 KStatusNotifierItem ===&lt;br /&gt;
;[[Development/Tutorials/PortToKStatusNotifierItem]]&lt;br /&gt;
:''本教程展示了如何将一个使用KSystemTrayIcon的程序转换到使用KStatusNotifierItem''&lt;br /&gt;
&lt;br /&gt;
== KDE2和KDE3相关材料 ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KDE3|KDE3教程]]&lt;br /&gt;
:''KDE3 相关教程''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KDE2|KDE2教程]]&lt;br /&gt;
:''KDE2 相关教程''&lt;br /&gt;
&lt;br /&gt;
[[Category:KDE4]]&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Marble/GsocGit</id>
		<title>Projects/Marble/GsocGit</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Marble/GsocGit"/>
				<updated>2011-04-28T20:22:35Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{warning|This page is not relevant to GSOC 2011 and later.}}&lt;br /&gt;
&lt;br /&gt;
This tutorial is a quick introduction to the setup and work with git and gitorious.org in Marble's Google Summer of Code (GSOC) projects. Further details can be found in the links listed in the last section of the page.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
The Marble source code is stored in the official KDE Subversion repository. The directory [http://websvn.kde.org/trunk/KDE/kdeedu/marble/ trunk/KDE/kdeedu/marble/] keeps the latest development changes. This is the reference code you should work with during GSOC. For your convenience this repository part is mirrored at gitorious.org in the [http://gitorious.org/marble/marble/commits/svn.kde.org svn.kde.org branch] of the marble repository in the marble project. This branch is updated from time to time to keep in sync with the development in Subversion.&lt;br /&gt;
&lt;br /&gt;
For your GSOC project, you setup another git repository on gitorious.org: Your personal clone of the marble gitorious repository. You will be the only person writing to the repository. Additionally you can synchronize it with (import) the latest Subversion changes at your convenience. There's a fourth repository, your local clone of your personal gitorious clone. Local means that unlike the other repositories, this one is only stored on your system. This is the repository you work with most of the time. The others are only for synchronization.&lt;br /&gt;
&lt;br /&gt;
Summing it up, there are four physical repositories:&lt;br /&gt;
* svn.kde.org keeps the latest Marble development code&lt;br /&gt;
* marble/marble.git on gitorious.org is a mirror of the svn.kde.org repository&lt;br /&gt;
* ~yournick/marble/yournicks-marble.git keeps your GSOC changes visible to the public&lt;br /&gt;
* A local clone on your system keeps your current development and is synchronized with your personal gitorious clone&lt;br /&gt;
&lt;br /&gt;
Logically, there are only two repositories:&lt;br /&gt;
* The latest Marble code in the marble/marble repository&lt;br /&gt;
* Your personal clone of the marble/marble repository which also holds your GSOC project (changed and added files)&lt;br /&gt;
&lt;br /&gt;
To understand how these repositories are updated / synchronized, let's have a look at who does which changes. First, changes from the top:&lt;br /&gt;
* Marble developers commit changes to the svn.kde.org repository&lt;br /&gt;
* Earthwings (or another Marble developer) from time to time invokes a script that transports the latest changes to svn.kde.org to the marble/marble.git repository on gitorious.org&lt;br /&gt;
* You (and nobody else) can import these changes into your personal clone&lt;br /&gt;
* You (and nobody else) can import changes to your personal clone on gitorious.org to your local clone. This is only needed if you are working on more than one system.&lt;br /&gt;
&lt;br /&gt;
Changes from bottom to top happen like this:&lt;br /&gt;
* You (and nobody else) can push your local development changes to your personal clone on gitorious.org&lt;br /&gt;
* Your personal clone is not going to be merged in the marble/marble.git repository (see below)&lt;br /&gt;
* The marble/marble.git repository is not going to update svn.kde.org&lt;br /&gt;
&lt;br /&gt;
Now how does your GSOC project end in the official Subversion repository? This will be handled at the end of GSOC via reviewboard. Git can create the necessary patch easily.&lt;br /&gt;
&lt;br /&gt;
While the number of repositories involved may seem huge and the process very complex, it is easy and fast to work with in practice. The main advantage of git in the GSOC context is its ability to handle merges easily. Merges occur when you synchronize your personal clone with the Marble development sources and when your GSOC project is merged ino the Marble development sources at the end of GSOC.&lt;br /&gt;
&lt;br /&gt;
== Initial Setup ==&lt;br /&gt;
&lt;br /&gt;
=== Gitorious Setup ===&lt;br /&gt;
Your personal clone of the marble/marble repository contains a full copy of the marble/marble repository at the time of cloning. You are the only one modifying this repository and it will contain your GSOC project. Setting up your personal clone of the marble/marble repository in gitorious is quite easy:&lt;br /&gt;
* Create an account at [http://gitorious.org Gitorious]&lt;br /&gt;
* Fill in the details and upload your public SSH key (create one if you don't have one)&lt;br /&gt;
* Go to [http://gitorious.org/marble/marble the marble/marble repository]&lt;br /&gt;
* Click on &amp;quot;Clone repository&amp;quot; and again &amp;quot;Clone repository&amp;quot; on the next page after reviewing the settings&lt;br /&gt;
&lt;br /&gt;
=== Local Repository Setup ===&lt;br /&gt;
The local repository is a clone (full copy) of your personal clone on gitorious. You use it during development: Review changes and commit them to your local repository. Whenever you feel like it, synchronize it with your personal clone on gitorious: Upload the latest changes so that everyone else can see them.&lt;br /&gt;
&lt;br /&gt;
Initially you need to clone your personal gitorious clone to create the local repository. This goes as follows:&lt;br /&gt;
 git clone git@gitorious.org:~earthwings/marble/earthwings-marble.git&lt;br /&gt;
&lt;br /&gt;
Replace &amp;quot;earthwings&amp;quot; with your Gitorious account. The clone URL can differ; have a look at your personal clone on gitorious.org where the clone URL is listed.&lt;br /&gt;
&lt;br /&gt;
The clone operation you did in gitorious was a one-time operation. It's possible and useful to synchronize changes happening after the clone operation later. For this to work, configure your local repository to list the marble/marble repository as another remote repository:&lt;br /&gt;
 git remote add mainline git@gitorious.org:marble/marble.git&lt;br /&gt;
 git fetch mainline&lt;br /&gt;
&lt;br /&gt;
== Day-to-Day operations ==&lt;br /&gt;
With the local repository set up, you can work with it like you work with any other git repository. This tutorial is not meant to replace the existing git tutorials: Please make sure to read one or more of them if you do not know git yet. See the last section at the end of this page for some nice general git tutorials.&lt;br /&gt;
&lt;br /&gt;
The following operations will be useful while working on your GSOC project.&lt;br /&gt;
&lt;br /&gt;
=== Commit local changes to the local repository ===&lt;br /&gt;
Local commits are a great way to keep your development work in order. You do not need an Internet connection for local commits.&lt;br /&gt;
&lt;br /&gt;
Show modified and new files&lt;br /&gt;
 git status&lt;br /&gt;
Show changes modified files introduce&lt;br /&gt;
 git diff&lt;br /&gt;
Commit all modified files&lt;br /&gt;
 git commit -a&lt;br /&gt;
Commit the new file foo.h&lt;br /&gt;
 git commit foo.h&lt;br /&gt;
See also git add and git add -i&lt;br /&gt;
&lt;br /&gt;
=== Synchronize changes to the local repository to your personal clone on gitorious ===&lt;br /&gt;
 git push&lt;br /&gt;
&lt;br /&gt;
=== Synchronize changes to your personal clone on gitorious to the local repository ===&lt;br /&gt;
Note: This step is only needed if you have more than one local repository &lt;br /&gt;
&lt;br /&gt;
 git pull&lt;br /&gt;
&lt;br /&gt;
=== Synchronize changes to the marble/marble repository to your personal clone ===&lt;br /&gt;
This is done by synchronizing changes to your local repository (see below) and pushing them to your personal clone afterwards (see above).&lt;br /&gt;
&lt;br /&gt;
=== Synchronize changes to the marble/marble repository to your local repository ===&lt;br /&gt;
 git fetch mainline&lt;br /&gt;
 git merge mainline/svn.kde.org&lt;br /&gt;
&lt;br /&gt;
You may also rebase the changes (see git tutorials).&lt;br /&gt;
&lt;br /&gt;
== Creating Review Requests ==&lt;br /&gt;
In Marble we're using [http://reviewboard.kde.org Review Board] for peer reviews of code. It is a bit picky about the format of patches it accepts, so we need to prepare a bit for it.&lt;br /&gt;
&lt;br /&gt;
First (but only once), you'll have to add the KDE subversion repository to your list of remote repositories and fetch data from it. This is needed to create a patch against the right files, those in the KDE subversion repository. Adding the remote repository takes two steps (replace nienhueser with your KDE Subversion account name):&lt;br /&gt;
 git svn init svn+ssh://nienhueser@svn.kde.org/home/kde/trunk/KDE/kdeedu/marble&lt;br /&gt;
 git svn fetch -r 1151760&lt;br /&gt;
&lt;br /&gt;
The revision argument should be a recent KDE Subversion revision number. To find out the most recent one, use (replace username again):&lt;br /&gt;
 svn info svn+ssh://nienhueser@svn.kde.org/home/kde/trunk/KDE/kdeedu/marble&lt;br /&gt;
&lt;br /&gt;
Once the data is fetched, you can create the diff. One of the following two methods should work:&lt;br /&gt;
* [http://www.reviewboard.org/docs/manual/dev/users/tools/post-review/ post-review] -n --server=reviewboard.kde.org &amp;gt; mypatch.diff&lt;br /&gt;
* [http://nienhueser.de/marble/marble-svn-diff marble-svn-diff] &amp;gt; mypatch.diff&lt;br /&gt;
&lt;br /&gt;
The marble-svn-diff script is based on http://wiki.koffice.org/index.php?title=Contributing_a_Patch and http://mojodna.net/2009/02/24/my-work-git-workflow.html&lt;br /&gt;
&lt;br /&gt;
When using marble-svn-diff, the resulting patch needs to be edited manually when new files are included in the patch. To so, open the patch in an editor, locate lines like&lt;br /&gt;
&lt;br /&gt;
 --- /dev/null  (revision 1151760)&lt;br /&gt;
 +++ src/MyNewClass.h  (working copy)&lt;br /&gt;
&lt;br /&gt;
and change them to&lt;br /&gt;
&lt;br /&gt;
 --- src/MyNewClass.h  (revision 0)&lt;br /&gt;
 +++ src/MyNewClass.h  (working copy)&lt;br /&gt;
&lt;br /&gt;
One of the two commands should give you a patch in the file mypatch.diff. Rename it to a sane name, create a review request and attach the file. Use &amp;lt;tt&amp;gt;/trunk/KDE/kdeedu/marble&amp;lt;/tt&amp;gt; as the &amp;quot;Base Directory&amp;quot; it asks you for when uploading the diff.&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
* [[Development/Git]]&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git</id>
		<title>Development/Git</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git"/>
				<updated>2011-04-28T20:22:15Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: /* External Git Resources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the hub page for all information about the use of Git by KDE.&lt;br /&gt;
&lt;br /&gt;
This page is a work in progress where all new Git material is being organised.  Most of these sections will eventually be moved to their own pages.  Feel free to add stuff.&lt;br /&gt;
&lt;br /&gt;
== KDE and Git ==&lt;br /&gt;
&lt;br /&gt;
This section provides details on using the KDE Git infrastructure.&lt;br /&gt;
&lt;br /&gt;
A primary resource is still http://community.kde.org/Sysadmin/GitKdeOrgManual&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Configuration ===&lt;br /&gt;
&lt;br /&gt;
How to configure Git for use with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
Please see the [[/Configuration|Git Configuration]] page.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Policies ===&lt;br /&gt;
&lt;br /&gt;
KDE policies on Git.  More generic development policies go elsewhere.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Recipes ===&lt;br /&gt;
&lt;br /&gt;
Short recipes for using Git with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
Please see the [[/Recipes|Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Tutorials ===&lt;br /&gt;
&lt;br /&gt;
More in-depth instructions in using Git.&lt;br /&gt;
&lt;br /&gt;
Please see the outdated [[Development/Tutorials/Git|KDE tutorial]] page which needs major revision.&lt;br /&gt;
&lt;br /&gt;
== External Git Resources ==&lt;br /&gt;
&lt;br /&gt;
Links to useful external sites about Git&lt;br /&gt;
&lt;br /&gt;
=== Official Documentation ===&lt;br /&gt;
&lt;br /&gt;
* http://git-scm.com/documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Git for SVN Users ===&lt;br /&gt;
&lt;br /&gt;
* http://git-scm.com/course/svn.html&lt;br /&gt;
* https://git.wiki.kernel.org/index.php/GitSvnCrashCourse&lt;br /&gt;
&lt;br /&gt;
=== Git books ===&lt;br /&gt;
&lt;br /&gt;
* [http://progit.org/book/ Pro Git] - An easy to understand book on git (CC licensed).&lt;br /&gt;
* [http://book.git-scm.com/ The git community book], also as [http://book.git-scm.com/book.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
=== Tutorials ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html The official tutorial introduction to Git]&lt;br /&gt;
* [http://www-cs-students.stanford.edu/~blynn/gitmagic/ Git Magic] - A good intro to git (in several languages!) &lt;br /&gt;
*[http://tom.preston-werner.com/2009/05/19/the-git-parable.html The Git Parable] - Essential reading if you want to truly understand git.&lt;br /&gt;
* [http://www.gitcasts.com/ Git Screencasts]&lt;br /&gt;
&lt;br /&gt;
=== Cheat Sheets ===&lt;br /&gt;
&lt;br /&gt;
* [http://cheat.errtheblog.com/s/git Quick reference]&lt;br /&gt;
* [http://zrusin.blogspot.com/2007/09/git-cheat-sheet.html Illustrated git cheat sheet]&lt;br /&gt;
&lt;br /&gt;
= Documentation Changes =&lt;br /&gt;
&lt;br /&gt;
== KDE Documentation Review ==&lt;br /&gt;
&lt;br /&gt;
=== Existing Pages For Review ===&lt;br /&gt;
&lt;br /&gt;
Existing KDE pages about Git, SVN, and/or buildinga KDE that need to be revised.  When revising pages try to split the generic development and revision control policies separate from Git specific stuff.  Do not refer to &amp;quot;the KDE Git Repository&amp;quot; but instead the &amp;quot;KDE Code Repository&amp;quot;.  Lots of small simple pages that are less daunting to newbies and can be linked to from multiple locations are preferred to massive walls of text.&lt;br /&gt;
&lt;br /&gt;
Keep:&lt;br /&gt;
* [[Development/Tutorials/Git/Basics]]&lt;br /&gt;
* [[Development/Tutorials/Git/git-svn]]&lt;br /&gt;
* [[Development/Tutorials/Git/kde-qt]]&lt;br /&gt;
* [[Getting Started/Sources/Amarok Git Tutorial]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On community.kde.org:&lt;br /&gt;
* http://community.kde.org/Sysadmin/GitKdeOrgManual&lt;br /&gt;
* http://community.kde.org/20110213_GitWorkflowAgenda&lt;br /&gt;
* http://community.kde.org/20110213_GitWorkflowAgenda/StevesIdea&lt;br /&gt;
&lt;br /&gt;
On techbase.kde.org:&lt;br /&gt;
* [[Getting Started]]&lt;br /&gt;
* [[Getting Started/Build/KDE4]]&lt;br /&gt;
* [[Getting Started/Build/KDE4.x]]&lt;br /&gt;
* [[Getting Started/Build/KDE4/Prerequisites]]&lt;br /&gt;
* [[Getting Started/Build/KDE4/Windows/subversion]]&lt;br /&gt;
* [[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts]]&lt;br /&gt;
* [[Getting_Started/Build/kdesrc-build]]&lt;br /&gt;
* [[Getting Started/Sources/Anonymous SVN]]&lt;br /&gt;
* [[Getting_Started/Sources/Using_Subversion_with_KDE]]&lt;br /&gt;
* [[Getting_Started/Set_up_KDE_4_for_development]]&lt;br /&gt;
* [[Getting_Started/Using_an_IDE_with_KDE4]]&lt;br /&gt;
* [[Policies/SVN_Commit_Policy]]&lt;br /&gt;
* [[Policies/SVN_Guidelines]]&lt;br /&gt;
* [[Development/Tools]]&lt;br /&gt;
* [[Development/Tutorials/Git/BestPractices]]&lt;br /&gt;
* [[Development/Tutorials/Git/Intermediate]]&lt;br /&gt;
* [[Development/Tutorials/Git/Recipes]]&lt;br /&gt;
* [[Development/Tutorials/Git/Create a patch]]&lt;br /&gt;
* [[Development/Tutorials/Git/decoding-git]]&lt;br /&gt;
* [[Projects/rekonq/Git_with_rekonq_HowTo]]&lt;br /&gt;
* [[Projects/Related/Subversion]]&lt;br /&gt;
* [[Projects/MovetoGit]]&lt;br /&gt;
* [[Projects/MoveToGit/StepsToMove]]&lt;br /&gt;
* [[Contribute/Get a SVN Account]]&lt;br /&gt;
* [[Contribute/First Steps with your KDE SVN Account]]&lt;br /&gt;
&lt;br /&gt;
There are also numerous other pages referring to &amp;quot;the KDE SVN/subversion repositories&amp;quot; which should be replaced with the generic &amp;quot;KDE code repositories&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
There are also numerous translated pages which will need to be updated once the original pages are completed.&lt;br /&gt;
&lt;br /&gt;
=== New Page Structure ===&lt;br /&gt;
&lt;br /&gt;
* [[Getting_Started]]&lt;br /&gt;
* [[Getting_Started/Build]]&lt;br /&gt;
* [[Getting_Started/Build/Environment]]&lt;br /&gt;
* [[Getting_Started/Build/Requirements]]&lt;br /&gt;
* [[Getting_Started/Build/Qt]]&lt;br /&gt;
* [[Getting_Started/Build/KdeSupport]]&lt;br /&gt;
* [[Getting_Started/Build/Windows]]&lt;br /&gt;
* [[Getting_Started/Build/Mac_OS_X]]&lt;br /&gt;
* [[Getting_Started/Run]]&lt;br /&gt;
* [[Getting_Started/Run/Shell]]&lt;br /&gt;
* [[Getting_Started/Run/Nested_Session]]&lt;br /&gt;
* [[Getting_Started/Run/Full_Session]]&lt;br /&gt;
&lt;br /&gt;
=== For Deletion ===&lt;br /&gt;
&lt;br /&gt;
The following pages can now be deleted and/or redirected:&lt;br /&gt;
* [[Development/Tutorials/Git]]&lt;br /&gt;
* [[Development/Tutorials/Git/KdeOnGit]]&lt;br /&gt;
* [[Development/Tutorials/Git/Pushing]]&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials_(zh_TW)</id>
		<title>Development/Tutorials (zh TW)</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials_(zh_TW)"/>
				<updated>2011-04-28T20:20:43Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar_(zh_TW)|Development/Tutorials}}&lt;br /&gt;
&lt;br /&gt;
教學是發現 KDE 能為你做哪些事以及如何做的捷徑。下面是當前可用的''' KDE 4 '''教學列表。關於 KDE 3 和 KDE 2 的材料可以在本頁的底部找到。&lt;br /&gt;
&lt;br /&gt;
==KDE 4 程式設計介紹==&lt;br /&gt;
你是否對用 KDE 4 寫程式感興趣呢？這個教學系列的目的是讓那些對 KDE 程式設計完全沒有概念的新手能夠入門。&lt;br /&gt;
;[[Development/Tutorials/First program (zh TW)|Hello World]]&lt;br /&gt;
:''初步的介紹了 KDE 4 程式設計的最基本知識''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using KXmlGuiWindow (zh TW)|建立主視窗]]&lt;br /&gt;
:''本教學將向你展示應用程式最重要的部分──主視窗──的魔術。''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using KActions (zh TW)|使用 KAction]]&lt;br /&gt;
:''如何在選單和工具列中加入動作（action）。''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Saving and loading (zh TW)|儲存與載入]]&lt;br /&gt;
:''介紹 KIO 函式庫，為我們的應用程式增加載入和儲存的功能。''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KCmdLineArgs_(zh_TW)|命令列參數]]&lt;br /&gt;
:''加入在命令列用文字編輯器打開指定檔案的功能。''&lt;br /&gt;
&lt;br /&gt;
==基礎知識==&lt;br /&gt;
;[[Development/Tutorials/KDE4 Porting Guide|移植你的程式]]&lt;br /&gt;
:''協助移植應用程式從Qt3/KDE3到Qt4/KDE4''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/CMake_(zh_TW)|介紹 CMake]]&lt;br /&gt;
:''如何把 CMake 構建系統用於 KDE 4 。''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Common Programming Mistakes_(zh_TW)|常見程式設計錯誤]]&lt;br /&gt;
:''各種在開發 Qt 和 KDE 應用程式時常見的錯誤，以及如何避免它們。''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using Qt Designer|使用 Qt Designer 建立使用者界面]]&lt;br /&gt;
:''如何使用 designer 建立 UI 檔案，以及如何整合它們到 KDE 程式中。''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Creating Libraries|建立函式庫來分享程式碼]]&lt;br /&gt;
:''如何把函式庫加到建構系統以及如何準備原始碼。''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Session_Management|工作階段管理]]&lt;br /&gt;
:''讓您的程式察覺 X 工作階段（X sessions）''&lt;br /&gt;
&lt;br /&gt;
==測試與除錯==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Debugging_(zh_TW)|對你的應用程式進行除錯]]&lt;br /&gt;
:''對你的 KDE 應用程式進行除錯時可以採用的工具、技術和技巧。''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Unittests|使用 QTestLib 為 Q t4 與 KDE 4 編寫 Unittest]]（[http://developer.kde.org/documentation/tutorials/writingunittests/writingunittests.html  原始出處]）&lt;br /&gt;
:''[mailto:bradh@frogmouth.net Brad Hards]的教學，敘述如何使用 QTestLib 框架編寫 unit tests。它是一個基於例子的教學，仍在開發中。''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Code_Checking|檢測程式碼錯誤的半自動方法]]&lt;br /&gt;
:''一些您可以用在 KDE 程式碼中檢測錯誤的技術''&lt;br /&gt;
&lt;br /&gt;
==使用 KConfig 管理配置資料==&lt;br /&gt;
;[[Development/Tutorials/KConfig|介紹 KConfig]]&lt;br /&gt;
:''概要介紹 KConfig 的類別，以及如何使用它們在你的應用程式的程式碼中''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using KConfig XT|使用 KConfig XT]]&lt;br /&gt;
:''如何有效使用 KConfig XT 框架的教學。''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Updating KConfig Files|更新 KConfig 檔案]]&lt;br /&gt;
:''如何編寫一個更新腳本，以保證你程式的設定檔格式與使用者已有的設定檔一致的教學''&lt;br /&gt;
&lt;br /&gt;
==服務：應用程式和外掛==&lt;br /&gt;
;[[Development/Tutorials/Services/Introduction|介紹服務框架]]&lt;br /&gt;
:''KDE中的服務框架，以及它們向開發人員提供了哪些功能的概述。覆蓋了系統配置快取(SyCoCa)、源資料檔案以及索引資訊可以做哪些事情。''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Services/Traders|使用 Trader Querie 來搜尋服務]]&lt;br /&gt;
:''如何使用 Trader Query 語法來搜尋那些在 SyCoCa 中有索引的服務，如外掛或者 mime 類型等''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Services/Plugins|使用 KService 建立和載入模塊]]&lt;br /&gt;
:''學習如何使用 KService，以一種方便且易於擴展方式來完成定義自定外掛類型、搜尋已安裝的外掛(包括第三方外掛)、以及載入外掛等任務。''&lt;br /&gt;
&lt;br /&gt;
==本地化==&lt;br /&gt;
另見[[Localization_(zh_TW)|本地化入口]]。&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Localization/Unicode|介紹 Unicode]]&lt;br /&gt;
:''介紹 Unicode 以及如何在 KDE 應用程式中處理 Unicode 資料。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n|編寫考慮到本地化需要的應用程式]]&lt;br /&gt;
:''這篇教學內容涵蓋了什麼是本地化、為什麼本地化很重要和如何確定您的應用程式已經為本地化做好準備。這是一份所有應用程式開發者都必讀的說明。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Mistakes|避免常見的本地化陷阱]]&lt;br /&gt;
:''這裡有許多常見易犯的錯誤，妨礙正確地本地化應用程式。這篇教學闡述了什麼是錯誤的方式，以及如何簡單地避開這些錯誤。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/Building KDE's l10n Module|建構 KDE 的本地化模塊]]&lt;br /&gt;
:''對那些用 KDE 主要貯藏庫開發應用程式的人來說，建構和安裝 KDE 的本地化（l10n）模塊中的語言支援是一個好主意。這樣可以讓您在其他語言測試您的應用程式並且迅速發現什麼地方出問題了。本教學教導如何做到這一點。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Build Systems|合併 i18n 到建構系統中]]&lt;br /&gt;
:''一旦您的程式已準備好進行本地化工作，下一步是確保翻譯檔案是自動建立並且是不斷更新的。本教學涵蓋了必要加入的 CMakeFiles.txt 以及您的應用程式在發佈的過程中所產生的訊息記載。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Challenges|常見的 i18n 挑戰和解決方案]]&lt;br /&gt;
:''本教學涵蓋你所可能遇到的各種挑戰，諸如陷入如翻譯手冊和存在原始碼以外的其他資料，合併和處理過時的 .po 檔，處理凍結，英語以外語言的編碼和建立獨立發佈版本或者在 KDE 模塊間轉移一些應用程式。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n_Semantics|訊息的語義標記]]&lt;br /&gt;
:''為了讓應用程式中保持一貫的表述，並使得信息表述更有意義。使用KUIT系統，語義學標記可用於翻譯的信息標記。此教學說明本系統如何運作。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Krazy|自動化 i18n 程式碼檢查]]&lt;br /&gt;
:''Krazy 程式碼檢查器會掃描 KDE 的程式碼並回報常見的 i18n 錯誤。''&lt;br /&gt;
&lt;br /&gt;
==文件==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/API_Documentation|API 文件]]&lt;br /&gt;
:''本教學解釋如何正確地文件化你的 API。''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Man_Pages|Man Pages]]&lt;br /&gt;
:''編寫和生成參考手冊。''&lt;br /&gt;
&lt;br /&gt;
== 應用程式自動化及腳本 ==&lt;br /&gt;
&lt;br /&gt;
=== D-Bus ===&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Introduction|介紹 D-Bus]]&lt;br /&gt;
:''A straight-forward introduction to the core concepts in D-Bus from an application developer's perspective, this tutorial covers what D-Bus is and how it can be used by applications.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Accessing Interfaces|訪問 D-Bus 介面]]&lt;br /&gt;
:''A step-by-step guide to calling D-Bus methods and connecting to D-Bus signals using QtDBus.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Intermediate_D-Bus|Intermediate D-Bus]]&lt;br /&gt;
:''Tips to make use of QtDBus when faced with problematic real-world interfaces.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Creating Interfaces|建立 D-Bus 介面]]&lt;br /&gt;
:''Learn how to expose functionality in your application by creating and using custom D-Bus interfaces. Covers generating the XML descriptions, instantiating interfaces at run time and setting up the build system with CMake.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Autostart Services|D-Bus 自動啟動服務]]&lt;br /&gt;
:''Turn your application into a D-Bus autostart service with this tutorial. This D-Bus feature, also known as &amp;quot;D-Bus service activation&amp;quot;, will ensure that even when your application isn't running that D-Bus calls made to it will work by relying on the D-Bus daemon itself to start your app if and when needed.''&lt;br /&gt;
; [[Development/Tutorials/Porting_to_D-Bus|從 DCOP 移植到 D-Bus]]&lt;br /&gt;
: ''Port your applications from DCOP to D-Bus with this handy guide.''&lt;br /&gt;
&lt;br /&gt;
=== Konqueror ===&lt;br /&gt;
; [[Development/Tutorials/Creating Konqueror Service Menus|建立 Konqueror 服務選單]]&lt;br /&gt;
:''This tutorial shows you how to create mimetype-specific actions in Konqueror's context menu (aka &amp;quot;servicemenus&amp;quot;).''&lt;br /&gt;
&lt;br /&gt;
=== Kross ===&lt;br /&gt;
; [[Development/Tutorials/Kross/Introduction|介紹 Kross]]&lt;br /&gt;
:''介紹 Kross 腳本框架。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Hello_World|Hello World]]&lt;br /&gt;
:''使用 Kross 的第一個應用程式。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Call_Functions_in_Kross|呼叫 Kross 中的函式]]&lt;br /&gt;
:''呼叫脚本函式的簡單示範''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Connecting_Signals_and_slots_in_Kross|鏈接 Kross中的訊號（Signals）和槽（Slots）]]&lt;br /&gt;
:''簡單示範連接物件訊號和脚本的槽''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Scripts-as-Plugins|Scripts as Plugins with Kross]]&lt;br /&gt;
:''This tutorial provides a step-by-step introduction how to integrate scripts as plugins into a KDE application.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Script-Actions|加入腳本動作到程式選單]]&lt;br /&gt;
:''如何擴充您的程式選單來執行腳本檔案的簡單示範。''&lt;br /&gt;
&lt;br /&gt;
===KOffice 外掛教學===&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/KOffice Overview|KOffice 概觀]]&lt;br /&gt;
:''This document shows an overview of the different KOffice plugin types and tells you what each of their purpose and strengths are.''  If you are new with KOffice plugins, this is the place to start.&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Write a Flake Plugin|建立 KOffice Flake 外掛]]&lt;br /&gt;
:''This tutorial shows you how you can build a plugin for KOffice applications to allow you embed content in ODF documents using Flake.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/KWord Scripting|KWord 腳本]]&lt;br /&gt;
:''本教學展示如何透過 Kross 使用Python、Ruby 或 JavaScript 腳本在 KWord。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/KSpread Scripting|KSpread 腳本]]&lt;br /&gt;
:''本教學展示如何透過 Kross 使用Python、Ruby 或 JavaScript 腳本在 KSpread。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Krita Scripting|Krita 腳本]]&lt;br /&gt;
:''本教學展示如何透過 Kross 使用Python、Ruby 或 JavaScript 腳本在 Krita。''&lt;br /&gt;
&lt;br /&gt;
=== SuperKaramba ===&lt;br /&gt;
; [[Development/Tutorials/SuperKaramba|SuperKaramba 教學]]&lt;br /&gt;
:''This tutorial provides an overview of SuperKaramba, theme files and scripting with Python, Ruby and JavaScript.''&lt;br /&gt;
&lt;br /&gt;
=== System Activity ===&lt;br /&gt;
&lt;br /&gt;
: [[Development/Tutorials/SystemActivity/Scripting|Writing script actions for the process's context menu]]&lt;br /&gt;
:''This tutorial shows how to add a context menu action to show custom information about a process.&lt;br /&gt;
&lt;br /&gt;
==外掛和 KParts==&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Writing kontact plugins|撰寫 Kontact 外掛]]:''Kontact 外掛是 KParts。本教學說明如何寫一個。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Using KParts|使用 KParts]]:''學習如何載入 KPart 到應用程式視窗。''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Writing Qt Designer Plugins|撰寫 Qt Designer 外掛]]:''Add your widgets to Qt Designer and thus make them usable in UI files.''&lt;br /&gt;
&lt;br /&gt;
== 搜尋與元數據 ==&lt;br /&gt;
&lt;br /&gt;
=== Strigi ===&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Writing file analyzers|編寫檔案分析器]]&lt;br /&gt;
:''File analyzers extract data from files to display in the file dialogs and file managers. The data gathered this way is also used to search for files. KDE4 allows the use of multiple analyzers per file type. This tutorial describes how you can write new analyzers.''&lt;br /&gt;
&lt;br /&gt;
=== [http://nepomuk.kde.org Nepomuk] ===&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/Quickstart|Nepomuk 快速入門]]&lt;br /&gt;
:''How to use Nepomuk resources in a quick and painless way without much fuss.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/RDFIntroduction|RDF and Ontologies in Nepomuk]]&lt;br /&gt;
:''An introduction to RDF and the usage of ontologies in Nepomuk.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/DataLayout|Data Layout in Nepomuk]]&lt;br /&gt;
:''An overview of which and how data is stored in Nepomuk.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/Resources|用 Nepomuk 處理資源]]&lt;br /&gt;
:''Nepomuk is the KDE library which provides easy access to metadata in the Nepomuk system. Learn how to make your application create and read metadata using the Nepomuk system.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/ResourceGenerator|使用 Nepomuk 資源生成器]]&lt;br /&gt;
:''Nepomuk includes a resource generator which creates convenience classes for handling metadata.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/AdvancedQueries|進階搜尋]]&lt;br /&gt;
:''The real power of Nepomuk can only be exposed when performing fancy queries on the data repository. This tutorial provides an introduction to semantic and full text queries in Nepomuk.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/NepomukServer|Nepomuk 伺服器和 Nepomuk 系統架構]]&lt;br /&gt;
:''The Nepomuk Server hosts the main Nepomuk data repository and can be accessed directly via a Soprano API.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/NepomukServices|Nepomuk 服務]]&lt;br /&gt;
:''The Nepomuk Server manages a set of Nepomuk services.''&lt;br /&gt;
:* [[Development/Tutorials/Metadata/Nepomuk/StorageService|存儲服務]] ''The probably most important service hosts the Nepomuk data repository using [http://soprano.sourceforge.net Soprano].''&lt;br /&gt;
:* [[Development/Tutorials/Metadata/Nepomuk/OntologyLoaderService|Ontology Loader]] ''Makes sure installed ontologies such as RDF, RDFS, NRL, or Xesam are loaded into the storage repository.''&lt;br /&gt;
:* [[Development/Tutorials/Metadata/Nepomuk/FileWatchService|檔案監視服務]] ''Monitors the file system for changes and updates the file resource paths and URIs in Nepomuk.''&lt;br /&gt;
:* [[Development/Tutorials/Metadata/Nepomuk/StrigiService|Strigi 服務]] ''Controls Strigi, the file indexing tool which extracts metadata from files and stores it into the storage repository.''&lt;br /&gt;
:* [[Development/Tutorials/Metadata/Nepomuk/QueryService|查詢服務]] ''Provides persistant query folders.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/TipsAndTricks|Nepomuk 提示和技巧]]&lt;br /&gt;
:''A set of tips and tricks for development with Nepomuk and Soprano. This is a must-read if you intend to use Nepomuk in your application or hack on it directly.''&lt;br /&gt;
&lt;br /&gt;
==硬體探知（Solid）==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Solid_Tutorials|介紹 Solid]]&lt;br /&gt;
:''An introduction to using the Solid hardware discovery and interaction system in KDE applications.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Solid_Network_Tutorial|訪問網絡資訊]]&lt;br /&gt;
:''How to use the Solid system to get information about the network''&lt;br /&gt;
&lt;br /&gt;
== 特許應用程式（PolicyKit）==&lt;br /&gt;
; [[Development/Tutorials/PolicyKit/Introduction|介紹 PolicyKit]]&lt;br /&gt;
:''A straight-forward introduction to what PolicyKit is, and how it can be useful for your next application requiring super-user privileges or user authentication''&lt;br /&gt;
; [[Development/Tutorials/PolicyKit/Helper_HowTo|Using the caller-helper model to perform actions as root]]&lt;br /&gt;
:''This tutorial will teach you how to get your application to perform some actions as root in a completely safe and easy manner, if the user is authorized to, by using PolicyKit and the caller-helper technique''&lt;br /&gt;
; [[Development/Tutorials/PolicyKit/KCM_HowTo|Getting root privileges in KCM Modules]]&lt;br /&gt;
:''This tutorial will teach you how to create KCModules able to save settings as root''&lt;br /&gt;
&lt;br /&gt;
== Authorization and Privilege escalation (KAuth) ==&lt;br /&gt;
; [[Development/Tutorials/KAuth/KAuth_Basics|KAuth 基礎]]&lt;br /&gt;
:''An overview of concepts and basic knowledge required to understand and use KAuth effectively''&lt;br /&gt;
; [[Development/Tutorials/KAuth/KAuth_Actions|在您的程式使用 KAuth 動作]]&lt;br /&gt;
:''How to execute KAuth actions in your application, and how to integrate them tightly into your UI''&lt;br /&gt;
; [[Development/Tutorials/KAuth/Helper_HowTo|Creating a KAuth helper to perform a privileged action]]&lt;br /&gt;
:''You will learn how to use KAuth's helpers and escalation facilities, and how to seamlessly make a privileged and non privileged portion of your application interact''&lt;br /&gt;
; [[Development/Tutorials/PolicyKit/KCM_HowTo|Creating a KCM requiring authorization upon saving]]&lt;br /&gt;
:''Learn how to use the high level KCModule API to create KCModules handling authorization, and its UI integration, on their own''&lt;br /&gt;
&lt;br /&gt;
== 多媒體（Phonon）==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Phonon/Introduction|Phonon]]&lt;br /&gt;
:''如何入門多媒體 API''&lt;br /&gt;
&lt;br /&gt;
:''How to compile and use Phonon and its GStreamer backend on Linux using Qt 4.3.x''&lt;br /&gt;
::''This article gives you a quick brief of how you can use checkout, compile Phonon and its GStreamer backend on GNU/Linux with just Qt 4.3.x. Towards the end, the article also describes how a developer can make use of Phonon to create simple audio and video players. You can read the article [http://www.vcreatelogic.com/oss/docs/CompilingPhononOnLinux.pdf here]. You can download the editable OpenDocumentText file from [http://www.prashanthudupa.com/phonon/CompilingPhononOnLinux.odt here].''&lt;br /&gt;
&lt;br /&gt;
== Plasma ==&lt;br /&gt;
&lt;br /&gt;
請見 [[Development/Tutorials/Plasma_(zh_TW)|Plasma 教學]]&lt;br /&gt;
&lt;br /&gt;
== 通訊（Decibel）==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Decibel/GettingStarted|Getting started with Decibel]]&lt;br /&gt;
:''This tutorial describes how to set up Decibel.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Decibel/Handling_TextChannels|Handling TextChannels]]&lt;br /&gt;
:''This tutorial introduces the basics of handling incoming TextChannels by guiding you through building a simple text chat application.''&lt;br /&gt;
&lt;br /&gt;
==個人資訊管理（Akonadi）==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Akonadi/Application|在應用程式中使用 Akonadi]]&lt;br /&gt;
:''Displaying and modifying data provided by Akonadi''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Akonadi/Resources|開發 Akonadi 資源]]&lt;br /&gt;
:''Akonadi Resources are agent programs which transport PIM data between Akonadi and a backend (files, servers, etc)''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Akonadi/SerializerPlugin|Using custom data types with Akonadi]]&lt;br /&gt;
:''Akonadi can handle arbitrary data as item payloads through the use of a plugin based serialization framework''&lt;br /&gt;
&lt;br /&gt;
==Kate / Kwrite==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Kate/KTextEditor Plugins|KTextEditor 外掛入門]]&lt;br /&gt;
:''建立您第一個 KTextEditor 外掛''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Kate/KTextEditor_Plugins_Advanced|Developing a plugin with configuration dialog]]&lt;br /&gt;
:''Adding a configuration dialog to the Time &amp;amp; Date example''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Kate/KTextEditor_Example|小型的編輯器]]&lt;br /&gt;
:''使用 KTextEditor 建立一個小程式''&lt;br /&gt;
&lt;br /&gt;
== KDevelop ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/KDevelop-PG-Qt_Introduction|KDevelop-PG-Qt 介紹]]&lt;br /&gt;
:''Information on the KDevelop parser generator, useful for language plugins.''&lt;br /&gt;
&lt;br /&gt;
==列印==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Printing Hello World|Hello World]]&lt;br /&gt;
:''介紹 KDE 列印系統''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Printing Print Dialog|列印對話框]]&lt;br /&gt;
:''使用 KDE 列印對話框''&lt;br /&gt;
&lt;br /&gt;
== kioslaves ==&lt;br /&gt;
* [[Development/Tutorials/KIO Slaves/Using KIO Slaves in your Program|使用 kioslaves 在您的程式]]&lt;br /&gt;
* [[Development/Tutorials/KIO Slaves/Hello World|建立一個 Hello-World kioslave]]&lt;br /&gt;
&lt;br /&gt;
== Collaboration ==&lt;br /&gt;
&lt;br /&gt;
=== Open Collaboration Services (libattica) ===&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Collaboration/Attica/Introduction|Introduction to Attica]]&lt;br /&gt;
:''In this tutorial a simple widget showing information about a Person on the server is created.''&lt;br /&gt;
&lt;br /&gt;
=== Get Hot New Stuff  ===&lt;br /&gt;
;[[Development/Tutorials/Collaboration/HotNewStuff/Introduction|Get Hot New Stuff 3]] &lt;br /&gt;
:''How to use KHotNewStuff3 in your application.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/K Hot New Stuff2|Introduction to Get Hot New Stuff 2]] &lt;br /&gt;
:''A short tutorial about how to use KHotNewStuff2 in your application. Deprecated, use version 3''&lt;br /&gt;
&lt;br /&gt;
*old links for KNS1 content:&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Introduction to Get Hot New Stuff|Introduction to Get Hot New Stuff]] &lt;br /&gt;
:''An introduction to the developer-friendly network update system that allows KDE applications to fetch new application data at runtime in a user friendly manner.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KNewStuffSecure|KNewStuff Secure]] ([http://developer.kde.org/documentation/tutorials/knewstuffsecure/index.html Original Link]) &lt;br /&gt;
:''Tutorial showing how to share resources in a secured way (KDE 3.4 and later).'' By András Mantia &amp;amp;lt;amantia@kde.org&amp;amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Goya ==&lt;br /&gt;
; [[Development/Tutorials/Introduction to Goya usage|Goya 使用簡介]]&lt;br /&gt;
:''An introduction for the Goya subsystem usage, which allows you to easily add widgets to your itemviews and connect their signals to your code, as they were real widgets.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Introduction to Goya usage 2|Goya 使用簡介(part 2)]]&lt;br /&gt;
:''The second part of the tutorial, with a slightly more complex example than the first part.''&lt;br /&gt;
&lt;br /&gt;
== 其他程式語言 ==&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
;[http://www.learningpython.com/2008/09/20/an-introduction-to-pyqt/ PyQt 介紹]&lt;br /&gt;
:''Starting off''&lt;br /&gt;
&lt;br /&gt;
;[http://lateral.netmanagers.com.ar/stories/BBS47.html PyQt 範例]&lt;br /&gt;
:''另一個 PyQt 介紹''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Languages/Python/PyKDE_WebKit_Tutorial|PyKDE WebKit 教學]]&lt;br /&gt;
:''A simple web browser application in PyKDE''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Python introduction to signals and slots|訊號（signals）與槽（slots）的101介紹]]&lt;br /&gt;
:''A simple introduction to Qt's signal and slot architecture.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Languages/Python/PyKDE_DBus_Tutorial|PyKDE DBus 教學]]&lt;br /&gt;
:''An introduction to DBus communication using PyKDE''&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
;[http://developer.kde.org/language-bindings/ruby/kde3tutorial/index.html KDE Ruby Korundum 教學]&lt;br /&gt;
:''A ruby version of Antonio Larrosa Jim&amp;amp;eacute;nez's KDE tutorial by Richard Dale. See the [[Development/Languages/Ruby (zh TW)|Ruby Developers Corner]] for Qt tutorials and other info.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Qt4_Ruby_Tutorial_(zh_TW)|Qt4 Ruby 教學]]&lt;br /&gt;
:''Nokia 極佳的 Qt 入門教學，翻譯為 Ruby 版本。''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Plasma/RubyApplet|用 Ruby 建立 Plasma Widget]]&lt;br /&gt;
:''本教學展示如何使用 Ruby 語言建立您的第一個 Plasma Applet。''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Developing_Qt4_Applications_using_Qt_Designer_and_Ruby_on_Kubuntu_(zh_TW)|在 Kubuntu 使用 Qt Designer 和 Ruby 開發 Qt4 應用程式]]&lt;br /&gt;
:''本教學從頭開始展示如何使用 Qt Designer 設計一個簡單的使用者介面，然後把產生的 widget 使用在 Qt Ruby 應用程式。''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Languages/Ruby/Ruby-Qt/KDE_Book|Ruby-Qt/KDE Book]]&lt;br /&gt;
:''There is also an approach to create an Ruby-Qt/KDE Book under a free license. The content will be created in this wiki.''&lt;br /&gt;
&lt;br /&gt;
=== Shell ===&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Shell_Scripting_with_KDE_Dialogs|Shell Scripting with KDE dialogs]]（[http://developer.kde.org/documentation/tutorials/kdialog/t1.html 原文鏈接]）&lt;br /&gt;
:''Tutorial by [mailto:bradh@frogmouth.net Brad Hards] that describes how to use KDE dialogs in shell scripts with kdialog. It is presented as an example based tutorial.''&lt;br /&gt;
&lt;br /&gt;
==繪圖程式設計==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Graphics/Performance|QPainter 效能]]&lt;br /&gt;
:''Hints on avoiding common mistakes leading to poor performance when using QPainter''&lt;br /&gt;
&lt;br /&gt;
== 使用 KDE 遊戲函式庫 ==&lt;br /&gt;
;[[Development/Tutorials/Games/KStandardGameAction|KStandardGameAction]]&lt;br /&gt;
:''使用 libkdegames 製作符合 kdegames 標準的遊戲''&lt;br /&gt;
;[[Development/Tutorials/Games/Highscores|排行榜]]&lt;br /&gt;
:''實現一個簡單的排行榜表到你的遊戲''&lt;br /&gt;
;[[Development/Tutorials/Games/Theme Selector| 主题選擇器]]&lt;br /&gt;
:''Using the libkdegames theme selection dialog''&lt;br /&gt;
;[[Development/Tutorials/Games/Palapeli Patterns| Palapeli Patterns]]&lt;br /&gt;
:''Creating a pattern for Palapeli''&lt;br /&gt;
&lt;br /&gt;
=== KGLEngine ===&lt;br /&gt;
;[[Development/Tutorials/Games/kglengine/kglengine-simpleBox| 安裝和您的第一個 KGLItem]]&lt;br /&gt;
:''開始您的第一個 kglengine 應用程式''&lt;br /&gt;
;[[Development/Tutorials/Games/kglengine/kglengine-motion| item motion]]&lt;br /&gt;
:''how to move kglitem''&lt;br /&gt;
;[[Development/Tutorials/Games/kglengine/kglengine-collision| collision detection]]&lt;br /&gt;
:''how to detect collision and interact ''&lt;br /&gt;
;[[Development/Tutorials/Games/kglengine/kglengine-texture| texture and color]]&lt;br /&gt;
:''apply texture and color for your items ''&lt;br /&gt;
;[[Development/Tutorials/Games/kglengine/kglengine-effects| particles and shadow effects]]&lt;br /&gt;
:''add some nice effects ''&lt;br /&gt;
;[[Development/Tutorials/Games/KGLEngine2d| kglpong]]&lt;br /&gt;
:''Now use our knowledge to make a pong''&lt;br /&gt;
&lt;br /&gt;
=== KALEngine ===&lt;br /&gt;
;[[Development/Tutorials/Games/KALEngine| 播放 hello word 聲音]]&lt;br /&gt;
:''Using KALEngine for games sound development using openAL''&lt;br /&gt;
;[[Development/Tutorials/Games/KALEngine-music| Play music]]&lt;br /&gt;
:''Using KALEngine to play music in a stream''&lt;br /&gt;
&lt;br /&gt;
==使用 KDE PIM 函式庫==&lt;br /&gt;
;[[Development/Tutorials/PIM/ical|iCalendar 功能]]&lt;br /&gt;
:''使用 kcal 管理 iCalendar 檔案''&lt;br /&gt;
&lt;br /&gt;
== 其它教學==&lt;br /&gt;
&lt;br /&gt;
===2D Plotting（KPlotWidget）===&lt;br /&gt;
;[[Development/Tutorials/KPlotWidget|使用 KDE data-plotting widget]]&lt;br /&gt;
:''This tutorial introduces KPlotWidget, which is used for 2-D data plotting.  It includes information on simple usage of the widget (including adding and modifying data sets, and customizing the plot axes and labels), and advanced customization (including extending the widget through sub-classing).''&lt;br /&gt;
&lt;br /&gt;
===拼寫與語法檢查（Sonnet）===&lt;br /&gt;
;[[Development/Tutorials/Sonnet/SonnetTutorial|在 KDE 應用程式中加入拼寫或語法檢查]]&lt;br /&gt;
:''This tutorial introduces Sonnet and how one may use it to add language correction to your KDE application. Sonnet's auxiliary features shall be described in a separate tutorial.''&lt;br /&gt;
&lt;br /&gt;
===像素圖快取（KPixmapCache）===&lt;br /&gt;
;[[Development/Tutorials/KPixmapCache|使用 KDE 像素圖快取]]&lt;br /&gt;
:''This tutorial shows how to use KPixmapCache to cache e.g. pixmaps generated from SVGs or some data.''&lt;br /&gt;
&lt;br /&gt;
===使用 MarbleWidget（Marble）===&lt;br /&gt;
;[[Development/Tutorials/MarbleWidget|使用 MarbleWidget]]&lt;br /&gt;
:''本教學說明如何在我們的專案中使用 MarbleWidget''&lt;br /&gt;
&lt;br /&gt;
===用本地 SCM 開發 KDE===&lt;br /&gt;
;[[Development/Git|使用 Git 在 KDE 開發]]&lt;br /&gt;
:''本教學說明如何使用 Git 在 KDE 開發''&lt;br /&gt;
&lt;br /&gt;
===Kwin 效果教學（部落格）===&lt;br /&gt;
;[http://blog.martin-graesslin.com/blog/?p=258 Martin Graesslin 的部落格]&lt;br /&gt;
:''This tutorial guides you through the development of a simple KWin effect''&lt;br /&gt;
&lt;br /&gt;
===實現並加入 KSysGuard 感應器 ===&lt;br /&gt;
;[[Development/Tutorials/Sensors]]&lt;br /&gt;
:''This tutorial shows how to write and KSysGuard sensor and connect it to the systray.''&lt;br /&gt;
Runners&lt;br /&gt;
&lt;br /&gt;
== KDE2 和 KDE3 材料 ==&lt;br /&gt;
;[[Development/Tutorials/KDE3|KDE3 教學]]&lt;br /&gt;
:''KDE3 相關主題的教學。''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KDE2|KDE2 教學]]&lt;br /&gt;
:''KDE2 相關主題的教學。''&lt;br /&gt;
&lt;br /&gt;
[[Category:KDE4]]&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/MovetoGit</id>
		<title>Projects/MovetoGit</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/MovetoGit"/>
				<updated>2011-04-28T20:20:23Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the page for co-ordinating KDE's move to [http://git-scm.com/ Git].&lt;br /&gt;
&lt;br /&gt;
If you're interested in helping, you should join the [https://mail.kde.org/mailman/listinfo/kde-scm-interest kde-scm-interest@kde.org] mailinglist and [irc://chat.freenode.net/kde-git #kde-git] on freenode.&lt;br /&gt;
&lt;br /&gt;
Meetings are wednesdays, 19:30 UTC, in #kde-git.&lt;br /&gt;
&lt;br /&gt;
'''New! [http://community.kde.org/Sysadmin/DeveloperAccessForRuleWriting The best way you can help us migrate]'''&lt;br /&gt;
&lt;br /&gt;
=The Plan=&lt;br /&gt;
&lt;br /&gt;
KDE is moving to [https://projects.kde.org/projects Git]. We will be using gitolite + Redmine + reviewboard on our own servers.&lt;br /&gt;
&lt;br /&gt;
In the summer of 2009, [http://gitorious.org/amarok Amarok] moved to Gitorious to test the waters and find problems that would affect KDE.&lt;br /&gt;
&lt;br /&gt;
After it has been decided in Jun 2010 to use our own servers, Amarok and Konversation moved to git.kde.org/projects.kde.org to test the waters and find problems that would affect KDE.&lt;br /&gt;
&lt;br /&gt;
Once those problems have been solved, all of KDE will be able to switch.&lt;br /&gt;
&lt;br /&gt;
A full schedule for the git infrastructure can be found [http://community.kde.org/Sysadmin/GitInfrastructureLaunch here].&lt;br /&gt;
&lt;br /&gt;
==Why?==&lt;br /&gt;
&lt;br /&gt;
Git offers many advantages over svn, including offline commits and much easier to keep a feature branch up-to-date. Many KDE developers are already using git-svn, but this tool has its limitations. We want to have the full power of Git available, and we have people willing to do the work necessary to migrate.&lt;br /&gt;
&lt;br /&gt;
==How?==&lt;br /&gt;
&lt;br /&gt;
When we move, KDE's svn repository will be migrated into several Git repos, all on git.kde.org. Main modules such as kdelibs and kdebase will each become one repository. Projects in extragear will each have their own repository. The projects.kde.org site will have a list (lists?) of all these repositories using the redmine project wiki. Scripts will be provided for downloading, say, all of extragear, so &amp;quot;moving&amp;quot; a project from kdereview to extragear would simply involve editing a file kept online that defined the location of projects.&lt;br /&gt;
Details on the reasoning behind this layout is available [[Projects/MoveToGit/Layout|here]].&lt;br /&gt;
&lt;br /&gt;
A few things will stay in subversion - currently websites, translations and manuals. It's possible they could move to Git later, but they won't be part of the mass migration.&lt;br /&gt;
&lt;br /&gt;
All KDE developers will in principle be able to use their existing &amp;quot;svn&amp;quot; accounts. Developers using HTTPS ideally would request their HTTPS SVN account to be converted to SSH as that makes it easiest for the KDE sysadmins, but alternatively they can also just provide a public key. At some point the KDE sysadmins are going to send everybody with a HTTPS SVN account an email with a link to a web app to collect their key (see http://www.omat.nl/2010/06/13/sysamin-update-your-email-address/).&lt;br /&gt;
&lt;br /&gt;
From the times when gitorious.org was the preferred hosting solution, a procedure to move a project from svn to gitorious.org can be found in [[Projects/MoveToGit/StepsToMove|Steps to follow for Moving]].&lt;br /&gt;
Many points probably still apply, but have to be updated.&lt;br /&gt;
&lt;br /&gt;
=Blockers=&lt;br /&gt;
&lt;br /&gt;
Tasks that need to get done before we can migrate&lt;br /&gt;
&lt;br /&gt;
==Setup git.kde.org==&lt;br /&gt;
{{Progress bar|100}}&lt;br /&gt;
'''Owner:''' Eike, Jeff, Sysadmin team&lt;br /&gt;
&lt;br /&gt;
'''Status:''' ''Progressing''&lt;br /&gt;
&lt;br /&gt;
: It [http://lists.kde.org/?l=kde-scm-interest&amp;amp;m=127612957219466&amp;amp;w=2 has been decided] to use gitolite + Redmine + reviewboard on our own servers rather than gitorious.org.  Sysadmin team is preparing git.kde.org for this.&lt;br /&gt;
&lt;br /&gt;
==Write / update importing rules for svn2git==&lt;br /&gt;
{{Progress bar|35}}&lt;br /&gt;
'''Owner:''' see below - volunteers needed!&lt;br /&gt;
&lt;br /&gt;
'''Status:''' ''sho: ???, tumaix:started to read the docs, cryos: getting started [2010-01-06]''&lt;br /&gt;
&lt;br /&gt;
:The importer is on gitorious.org as svn2git we have a set of rules to tell the importer what svn dirs turn into which git repos and those need constant updating whenever a new branch or tag or project is created. Currently the rules are mostly a rough draft, as seen by the large amount of rule-editing that had to be done for Konversation and Amarok. This has not been done for quite some time and so someone should rsync the svn repo run svn2git and fix the rules and importer whenever the import stops.&lt;br /&gt;
&lt;br /&gt;
:This is a very big task, too big for one person; it's probably best to tackle it one module at a time&lt;br /&gt;
&lt;br /&gt;
:To get started on a module, read [[Projects/MoveToGit/UsingSvn2Git|Using Svn2Git]]&lt;br /&gt;
&lt;br /&gt;
:TZander has done the koffice ruleset as of 2009-01-06&lt;br /&gt;
&lt;br /&gt;
:Jpwhiting has finished (more or less) the kdeaccessibility ruleset 2010-01-24.&lt;br /&gt;
&lt;br /&gt;
:aavci has done the k3b ruleset as of 2010-01-27&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
progress details:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!repo&lt;br /&gt;
!owner&lt;br /&gt;
!%&lt;br /&gt;
!comments&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdeaccessibility&lt;br /&gt;
|jpwhiting&lt;br /&gt;
|99&lt;br /&gt;
|&amp;quot;more or less&amp;quot;?&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdeadmin&lt;br /&gt;
|ruphy&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdeartwork&lt;br /&gt;
|ruphy&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdebase&lt;br /&gt;
|ruphy&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdebindings&lt;br /&gt;
|pumphaus/Arno Rehn&lt;br /&gt;
|100&lt;br /&gt;
|All written, converted and migrated&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdeedu&lt;br /&gt;
|cryos?&lt;br /&gt;
|10&lt;br /&gt;
|[[http://community.kde.org/KDE_Edu#Git_Migration]]&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdeedu/marble&lt;br /&gt;
|jmho&lt;br /&gt;
|100&lt;br /&gt;
|Contains: trunk with moves (playground-&amp;gt;kdereview-&amp;gt;kdeedu), regular kde branches/tags and the following other branches: marble-0.4, gsoc-2009 and geodata-nt. Checking done: gitk --all, verify-git-from-svn&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdeexamples&lt;br /&gt;
|ruphy&lt;br /&gt;
|50&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdegames&lt;br /&gt;
|jobermayr&lt;br /&gt;
|95&lt;br /&gt;
|coolo or mueller do not give me required information for old tags :-(&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdegraphics&lt;br /&gt;
|ruphy&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdelibs&lt;br /&gt;
|ruphy&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdemultimedia&lt;br /&gt;
|eean&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdenetwork&lt;br /&gt;
| grundleborg&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdepim&lt;br /&gt;
|tnyblom&lt;br /&gt;
|100&lt;br /&gt;
|Donen.&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdepim-runtime&lt;br /&gt;
|tnyblom&lt;br /&gt;
|100&lt;br /&gt;
|Done&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdepimlibs&lt;br /&gt;
|tnyblom&lt;br /&gt;
|100&lt;br /&gt;
|Awaits 4.6.0 release&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdeplasma-addons&lt;br /&gt;
|asouza&lt;br /&gt;
|95&lt;br /&gt;
|Verifying&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdesdk&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdetoys&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdeutils&lt;br /&gt;
|jobermayr&lt;br /&gt;
|95&lt;br /&gt;
|coolo or mueller do not give me required information for old tags :-(&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdewebdev&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|extragear/sdk/kdevelop&lt;br /&gt;
| apaku&lt;br /&gt;
| 95&lt;br /&gt;
| trunk and branches complete, need to cleanup tags from cvs days.&lt;br /&gt;
|-&lt;br /&gt;
|extragear/sdk/kdevplatform&lt;br /&gt;
| apaku&lt;br /&gt;
| 100&lt;br /&gt;
| done, all tags seem fine all branches are there&lt;br /&gt;
|-&lt;br /&gt;
|extragear/sdk/kdevelop-plugins&lt;br /&gt;
| nsams&lt;br /&gt;
| 100&lt;br /&gt;
| done&lt;br /&gt;
|-&lt;br /&gt;
|extragear/sdk/quanta&lt;br /&gt;
| nsams&lt;br /&gt;
| 99&lt;br /&gt;
| done&lt;br /&gt;
|-&lt;br /&gt;
|extragear/utils/krecipes&lt;br /&gt;
| santa&lt;br /&gt;
| 85&lt;br /&gt;
| Branches are done, I'm working on tags.&lt;br /&gt;
|-&lt;br /&gt;
|extragear/*/*&lt;br /&gt;
|&lt;br /&gt;
|xx&lt;br /&gt;
|expand the *'s later (let's focus on the base modules first)&lt;br /&gt;
|-&lt;br /&gt;
|kde-common&lt;br /&gt;
|mattr&lt;br /&gt;
|75&lt;br /&gt;
|analyzing import history&lt;br /&gt;
|-&lt;br /&gt;
|kdesupport&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|kdesupport/soprano&lt;br /&gt;
|cgiboudeaux&lt;br /&gt;
|100&lt;br /&gt;
|Ready to migrate&lt;br /&gt;
|-&lt;br /&gt;
|kdesupport/attica&lt;br /&gt;
|cgiboudeaux&lt;br /&gt;
|100&lt;br /&gt;
|Ready to migrate&lt;br /&gt;
|-&lt;br /&gt;
|koffice&lt;br /&gt;
|tzander&lt;br /&gt;
|100&lt;br /&gt;
|Migrated&lt;br /&gt;
|-&lt;br /&gt;
|promo&lt;br /&gt;
|ruphy&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|quality&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|tests&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Requirements of KDEPIM and KDAB ==&lt;br /&gt;
&lt;br /&gt;
{{Progress bar|90}}&lt;br /&gt;
'''Owner:''' Stephen Kelly&lt;br /&gt;
&lt;br /&gt;
'''Status:''' ''Proposed workflow identified. Partially depends on KDE policies regarding branches and merging. Gathering estimates for porting of tooling from svn to git. People unfamiliar with the tool are starting to learn to use it.''&lt;br /&gt;
&lt;br /&gt;
'''Estimated completion date''': End of May.&lt;br /&gt;
&lt;br /&gt;
'''Summary of issues'''&lt;br /&gt;
&lt;br /&gt;
* Clean slate&lt;br /&gt;
** The existing backlog of commits which need to be merged or ported to trunk needs to be empty before the change to git so that nothing gets lost. This is a lot of work and will take time. ''Estimate'' 10 calendar weeks.&lt;br /&gt;
* Technical difficulties and limitations.&lt;br /&gt;
** Up to KDE 3.5 there was one kdepim module. For the KDE4 cycle, this was split into kdepimlibs and kdepim. For the above mentioned merging to be possible, it makes sense for both to be in the same git module. This poses extra difficulty to the svn2git script.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Email threads'''&lt;br /&gt;
&lt;br /&gt;
* Mid-January thread on scm-interest: http://thread.gmane.org/gmane.comp.kde.devel.pim/26726&lt;br /&gt;
* Early March thread on kde-core-devel (Till email): http://thread.gmane.org/gmane.comp.kde.devel.core/63915/focus=63970&lt;br /&gt;
* Early March thread on kde-core-devel (Till follow-up):&lt;br /&gt;
http://thread.gmane.org/gmane.comp.kde.devel.core/63915/focus=64069&lt;br /&gt;
&lt;br /&gt;
'''Resolved Issues'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Branch maintenance workflow '''Resolution: http://thread.gmane.org/gmane.comp.kde.scm-interest/1310'''&lt;br /&gt;
** KDAB maintains several branches of legacy versions of KDE for enterprise customer deployments. [http://websvn.kde.org:80/branches/kdepim/enterprise/ Enterprise 3.5] [http://websvn.kde.org:80/branches/kdepim/enterprise4/ Enterprise 4 (based on KDE 4.2)]. The current KDEPIM trunk known as Enterprise 5 and is Akonadi based.&lt;br /&gt;
** Periodically (weekly or so), tags are created from the enterprise branches with bugfixes. http://websvn.kde.org:80/tags/kdepim/ Customers can download the tagged versions with the latest updates. Fixes are merged from the Enterprise 3.5 branch, and into trunk (which sometimes involves a lot of work, as the fix must be ported to Akonadi). Additionally, fixes get merged in the other direction. From official KDE modules into the Enterprise branches.&lt;br /&gt;
** Some fixes from Enterprise 3.5 should not be merged into Enterprise 4 for reasons such as no longer being reproducible. Some fixes do not get merged for a long time because they require so much work that porting the fix or feature is deffered. There needs to be a list of commits which should never be merged (blocked commits), and commits which should be merged, but have not been merged yet. The tool [[Development/Tools/svnmerge.py|svnmerge]] is used to facilitate this. svnmerge uses svn properties to maintain lists of commits that are blocked and that have already been integrated. See for example the svn-blocked and svn-integrated properties here: http://websvn.kde.org:80/trunk/KDE/kdepim/. The lists of commits available to be merged into the various branches are here: http://www.kdab.com/~thomas/avail/&lt;br /&gt;
** There needs to be a way in git to keep track of what commits have been merged, what commits need to be merged, and what commits are blocked. There needs to be a way of merging only specific commits from a branch, but not all, and not blocked commits. Proposed solutions:&lt;br /&gt;
*** git cherry-pick allows 'merging' of individual commits, but does not record where the commits came from. Instead it creates a new commit without any reference to where it came from. This alone is unsuitable.&lt;br /&gt;
*** branch per fix. This would lead to an explosion of branches which is not a problem in git as all commits are branches. It may make gitk un-navigatable. There would need to be a naming convention such as komo-merge-&amp;lt;fixname&amp;gt; for branches which should be merged. The commands &amp;lt;tt&amp;gt;git checkout 4.5 &amp;amp;&amp;amp; git merge $(git branch -a | grep -E ^origin/komo-merge)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;git checkout enterprise4.5 &amp;amp;&amp;amp; git merge $(git branch -a | grep -E ^origin/komo-merge)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;git checkout master &amp;amp;&amp;amp; git merge $(git branch -a | grep -E ^origin/komo-merge)&amp;lt;/tt&amp;gt;. That could of course be optimized, but gets the point across. If the code has changed so much that the branch is unmergable, but the fix still needs to be in trunk, the system breaks down.&lt;br /&gt;
*** Custom git command with flat text files representing the same information as svnmerge, that is lists of blocked and integrated commits. This is most likely to be a workable solution, possibly together with conventional branch naming.&lt;br /&gt;
* Internal Tools and external customer tools and workflows&lt;br /&gt;
** KDAB is a consumer of KDE software, but also has downstream customers fetching software from where it is developed. That is, KDE SVN. For example packages are created from the tags in tags/kdepim. Some of these downstreams are less close to KDE and depend on current workflows. If KDE SVN is not the place to get those updates anymore, this needs to be communicated to those downstreams, and the tools updated. ''Estimate'' 1 week to port the tools.&lt;br /&gt;
*** Internally used tools have been updated and are now being used to access git repos such as dbus.&lt;br /&gt;
* Other commitments&lt;br /&gt;
** Project deadlines and other commitments prevent the possibility of blocking off time to work on git migration when so many other things need to be done which have milestones separate to KDE cycles. The required work to convert to git can't be prioritized as highly, and so will take more time.&lt;br /&gt;
*** Most of the technical work regarding migration of kdepim repos has been completed by community member Torgny Nyblom.&lt;br /&gt;
* Tool knowledge&lt;br /&gt;
** People who don't currently know how to use git need to get familiar with it so that transitioning will be nearly seamless, and not result in too much development slowdown.&lt;br /&gt;
*** Workshops and use of git-svn have been used to bring developers up to speed on how to use git at some level.&lt;br /&gt;
&lt;br /&gt;
=Nice to have before the migration=&lt;br /&gt;
&lt;br /&gt;
==Push log==&lt;br /&gt;
{{Progress bar|100}}&lt;br /&gt;
'''Owner:''' sysadmin&lt;br /&gt;
&lt;br /&gt;
'''Status:''' finished&lt;br /&gt;
&lt;br /&gt;
It's a push log, similar to a local repository's reflog.&lt;br /&gt;
&lt;br /&gt;
---------------&lt;br /&gt;
&lt;br /&gt;
For every push, log:&lt;br /&gt;
 - who pushed (not the Unix username, which will be &amp;quot;git&amp;quot;)&lt;br /&gt;
 - which branch heads changed (what from, what to)&lt;br /&gt;
 - which tags were created&lt;br /&gt;
 - the state of all other branches and tags&lt;br /&gt;
&lt;br /&gt;
Just use git commit-tree with the empty tree and save everything in the commit &lt;br /&gt;
message, one after the other.&lt;br /&gt;
&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
Gitolite includes this functionality inbuilt to itself, although all repositories are logged in the same file - bcooksley&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Script for downloading virtual KDE hierarchies==&lt;br /&gt;
{{Progress bar|99}}&lt;br /&gt;
'''Owner''': &lt;br /&gt;
&lt;br /&gt;
'''Status:''' &lt;br /&gt;
&lt;br /&gt;
:we already have kdesvn-build, build-tool and mr: three good tools for managing repos.&lt;br /&gt;
&lt;br /&gt;
Most people use kdesrc-build; it will neither eat babies nor kittens. it has options for updating everything or individual modules, can do fetch-only or build-only, etc..&lt;br /&gt;
Command-line options for updating the configuration would be a nice addition.&lt;br /&gt;
&lt;br /&gt;
TODO: details on mr and build-tool&lt;br /&gt;
&lt;br /&gt;
note: scripty also has its own list of repos. it's just in a rather weird bash file.&lt;br /&gt;
&lt;br /&gt;
'''Discussion:''' &lt;br /&gt;
&lt;br /&gt;
As far as I can see, kdesvn-build is able to do it, it should be just a matter of providing a configuration. As I'm not using build-tool, I can't say anything about it. --jmho&lt;br /&gt;
&lt;br /&gt;
'''Links'''&lt;br /&gt;
*[http://kdesvn-build.kde.org/ kdesvn-build]&lt;br /&gt;
*[[Projects/MovetoGit/MassCloneScript]]&lt;br /&gt;
*[http://rubyforge.org/projects/build-tool/ build-tool]&lt;br /&gt;
*TODO: link to mr&lt;br /&gt;
&lt;br /&gt;
==pre-receive hooks==&lt;br /&gt;
{{Progress bar|50}}&lt;br /&gt;
'''Owner:''' ''volunteers needed!!''&lt;br /&gt;
&lt;br /&gt;
* Line endings and encodings&lt;br /&gt;
&lt;br /&gt;
'''Discussion:'''&lt;br /&gt;
this got accidentally marked as done or something, but it's not.&lt;br /&gt;
&lt;br /&gt;
This has now been ported to Git - bcooksley&lt;br /&gt;
&lt;br /&gt;
Note however that it doesn't look for a .gitattributes file yet - patches welcome ( see sysadmin/repo-management on git.kde.org )&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
&amp;gt; &amp;gt; As for line-endings, be careful because Git is different from Subversion.&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; different how?&lt;br /&gt;
&lt;br /&gt;
Just ensure that all files are stored as LF only, except if there's a &lt;br /&gt;
.gitattributes file saying &amp;quot;-crlf&amp;quot; (i.e., allow it to have CRLF).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Snapshot to read-only svn==&lt;br /&gt;
{{Progress bar|100}}&lt;br /&gt;
'''Owner:'''&lt;br /&gt;
&lt;br /&gt;
:It's work, but maybe some people would like it. NEEDED for documentation, in order to get it back into SVN for the translators/scripty/?&lt;br /&gt;
&lt;br /&gt;
'''Discussion'''&lt;br /&gt;
&lt;br /&gt;
:Could be done with a git-svn gateway presumably? -Mike Arthur 19/10/2009 16:04&lt;br /&gt;
&lt;br /&gt;
:if we leave the docbook stuff in svn, we can avoid this a bit longer. --[[User:Chani|Chani]] 23:21, 12 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Scripty operates on a git clone of the repo's. No need for this item imho -- toma&lt;br /&gt;
&lt;br /&gt;
==[[Development/Git|Techbase Documentation]]==&lt;br /&gt;
'''Owner:''' Chani, greeneg, - ''please help out!''&lt;br /&gt;
{{Progress bar|10}}&lt;br /&gt;
&lt;br /&gt;
:At least minimal documentation about how to checkout, how to request a merge needed, other git documentation and links to other git information would be very useful also.&lt;br /&gt;
&lt;br /&gt;
:see the [[Development/Git|Central Git Page]]. help wanted!!&lt;br /&gt;
&lt;br /&gt;
'''Discussion'''&lt;br /&gt;
&lt;br /&gt;
==Setup git mirrors for cloning==&lt;br /&gt;
{{Progress bar|100}}&lt;br /&gt;
'''Owner:''' sysadmin&lt;br /&gt;
:Re-purpose the anonsvn servers. This item might be a blocker.&lt;br /&gt;
'''Discussion'''&lt;br /&gt;
:sysadmin will add mirrors as needed and is prepared for it. -- toma&lt;br /&gt;
&lt;br /&gt;
==Local pre-commit hooks==&lt;br /&gt;
{{Progress bar|0}}&lt;br /&gt;
'''Owner:''' argonel&lt;br /&gt;
&lt;br /&gt;
:A set of recommended local hooks that give useful warnings could be nice to have.&lt;br /&gt;
&lt;br /&gt;
'''Discussion'''&lt;br /&gt;
...on the other hand, if we get a lot of bikeshedding about what hooks, then it won't be so nice. so I'd put this in the &amp;quot;very optional&amp;quot; pile. --[[User:Chani|Chani]] 19:10, 16 December 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
=Post-migration Issues=&lt;br /&gt;
&lt;br /&gt;
==Website Branding==&lt;br /&gt;
{{Progress bar|50|text=(initial ideas on the table)}}&lt;br /&gt;
'''Owner:''' ruphy&lt;br /&gt;
&lt;br /&gt;
:KDE Gitorious should be branded accordingly, and should be reachable from git.kde.org as well as kde.gitorious.org&lt;br /&gt;
&lt;br /&gt;
'''Discussion'''&lt;br /&gt;
&lt;br /&gt;
Is this section still necessary at all? Perhaps some branding has to be done for redmine or cgit, but I don't know. --jmho&lt;br /&gt;
&lt;br /&gt;
Neverendingo is looking at this as needed --toma&lt;br /&gt;
&lt;br /&gt;
=Unscheduled &amp;amp; Open=&lt;br /&gt;
&lt;br /&gt;
==Allow tagging without involving sysadmins==&lt;br /&gt;
{{Progress bar|100}}&lt;br /&gt;
&lt;br /&gt;
'''Owner:''' sysadmin&lt;br /&gt;
&lt;br /&gt;
:Gitolite allows sysadmin to permit certain people on certain repos only to manage both branches and tag without needing force push rights.&lt;br /&gt;
&lt;br /&gt;
'''Discussion'''&lt;br /&gt;
&lt;br /&gt;
==Account setup for Gitolite==&lt;br /&gt;
{{Progress bar|100}}&lt;br /&gt;
&lt;br /&gt;
'''Owner:''' ''sysadmin''&lt;br /&gt;
&lt;br /&gt;
:Accounts for existing SVN accounts which use SSH for access have been automatically granted access to Gitolite. Those who are still using HTTPS need to file a sysadmin bug to change their SVN account to SSH and will recieve Git access automatically.&lt;br /&gt;
&lt;br /&gt;
==post-update hooks==&lt;br /&gt;
{{Progress bar|100}}&lt;br /&gt;
'''Owner:''' ''morice'' ''Ian Monroe''&lt;br /&gt;
&lt;br /&gt;
:* License checker&lt;br /&gt;
&lt;br /&gt;
'''Discussion:'''&lt;br /&gt;
We have a fairly complete set of post-update hooks now. See [http://gitorious.org/remotehook remotehook]. However, it would be nice to have a system that lives on the Gitorious server and/or requires less manual maintenance. But its certainly workable and no longer a blocker.&lt;br /&gt;
&lt;br /&gt;
Working fine in the new setup, --toma&lt;br /&gt;
&lt;br /&gt;
=Completed Tasks=&lt;br /&gt;
&lt;br /&gt;
==Get rid of svn:externals==&lt;br /&gt;
{{Progress bar|100}}&lt;br /&gt;
'''Owner:''' David Faure&lt;br /&gt;
&lt;br /&gt;
'''Status:''' ''???''&lt;br /&gt;
&lt;br /&gt;
:not possible with git, broken by design.&lt;br /&gt;
&lt;br /&gt;
::&lt;br /&gt;
&lt;br /&gt;
'''Discussion'''&lt;br /&gt;
&lt;br /&gt;
Exists, but ignorable:&lt;br /&gt;
* kdesupport shared-desktop-ontologies (temporary)&lt;br /&gt;
* playground/utils strigi-chemical/test/ctfr&lt;br /&gt;
* playground/devtools kdevelop4-extra-plugins/php/parser/generated/kdevelop-pg-qt&lt;br /&gt;
* playground/devtools kdevelop4-extra-plugins/python/parser/generated/kdevelop-pg-qt&lt;br /&gt;
* playground/devtools kdevelop4-extra-plugins/qmake/parser/generated/kdevelop-pg-qt&lt;br /&gt;
* playground/devtools kommander-plugins/database3/admin&lt;br /&gt;
* playground/devtools kommander-plugins/database/admin&lt;br /&gt;
* playground/devtools kommander-plugins/datetimefuncs/admin&lt;br /&gt;
* playground/devtools kommander-plugins/htmlpart/admin&lt;br /&gt;
* playground/devtools kommander-plugins/httpform/admin&lt;br /&gt;
* playground/devtools kommander-plugins/kparts/admin&lt;br /&gt;
* playground/devtools kommander-plugins/qtactionproxy/admin&lt;br /&gt;
* playground/devtools kommander-plugins/timewidget/admin&lt;br /&gt;
* playground/devtools kommander-plugins/webkit3/admin&lt;br /&gt;
* playground/devtools kpackagemaker/admin&lt;br /&gt;
&lt;br /&gt;
==EBN==&lt;br /&gt;
{{Progress bar|95}}&lt;br /&gt;
'''Owner:''' ''drf''&lt;br /&gt;
&lt;br /&gt;
'''Status:''' ''Amarok has EBN checks''&lt;br /&gt;
&lt;br /&gt;
:EBN's krazy checks currently run on kde's svn repo; it needs upgrading to download and check our git repos too.&lt;br /&gt;
&lt;br /&gt;
:This would be easier if there was a repo-list that EBN could parse, as it can no longer just svn up to get everything.&lt;br /&gt;
&lt;br /&gt;
==Talk to people using other distros about git==&lt;br /&gt;
{{Progress bar|100}}&lt;br /&gt;
'''Owner:''' Sebas, Eike&lt;br /&gt;
&lt;br /&gt;
'''Discussion'''&lt;br /&gt;
* Gentoo: They seem to be prepared for moving their live SVN packages to git; their package manager has easily-reusable classes to fetch from an SCM and moving the ebuilds to using the git class rather than the SVN class should be easy. Positive comments to that end from people in #gentoo-kde.&lt;br /&gt;
* Fedora: Some unhappyness about git because SVN allows them to remotely produce a diff between two SVN URLs (or two revisions of one and the same URL) without making a checkout first, while git requires making a clone. Kevin Kofler (IRC nick Kevin_Kofler, #fedora-kde) says this will make their packager work harder.&lt;br /&gt;
* Debian: Is indifferent about the SCM switch.&lt;br /&gt;
&lt;br /&gt;
==Post Update hooks==&lt;br /&gt;
{{Progress bar|100}}&lt;br /&gt;
'''Owner:''' ''morice, johan, mattr&lt;br /&gt;
&lt;br /&gt;
:List of scripts needed:&lt;br /&gt;
:* BUG/CCMAIL&lt;br /&gt;
:* email/CIA&lt;br /&gt;
&lt;br /&gt;
:Gitorious needs to provide a way for hooks to be called; KDE needs to write said hooks.&lt;br /&gt;
&lt;br /&gt;
'''Discussion'''&lt;br /&gt;
&lt;br /&gt;
:There is a branch of gitorious called web-hooks http://gitorious.org/gitorious/mainline/commits/web-hooks --Panagiotis Papadopoulos 1 November 2009&lt;br /&gt;
:Same situation as commit emails. I can do it but it doesn't scale well and a Gitorious-supported solution would be nicer. --[[User:Eean|eean]] 16:07, 12 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
==Reviewboard==&lt;br /&gt;
{{Progress bar|100}}&lt;br /&gt;
'''Owner:''' darktears&lt;br /&gt;
&lt;br /&gt;
This should be easily done with Gitorious web interface and merge requests actually.&lt;br /&gt;
&lt;br /&gt;
'''Discussion'''&lt;br /&gt;
&lt;br /&gt;
:but reviewboard has features gitorious (right now) doesn't, like commenting on specific lines and not having to set up a merge request. --chani&lt;br /&gt;
::Also email notifications when someone reviews are needed --thomasz&lt;br /&gt;
:We're working on this for someone else right now, so pretty soon --johan-s&lt;br /&gt;
:I consider the latest changes to gitorious to finish this. If more reviewboard features are still needed, and git supports reviewboard, I think this is something we can look at doing post-conversion. --Ian Monroe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Gitorious Needs a feature to disable merge request emails for certain repos==&lt;br /&gt;
{{Progress bar|100}}&lt;br /&gt;
'''Owner:''' [http://gitorious.org/gitorious Gitorious]&lt;br /&gt;
&lt;br /&gt;
Have a sensible system for merge request emails.  This is now in place - you can join groups, chose whether to have emails on a per repo basis, etc.&lt;br /&gt;
&lt;br /&gt;
==SSH blocked in corporations and universities.==&lt;br /&gt;
{{Progress bar|100}}&lt;br /&gt;
'''Owner:''' ''Unknown''&lt;br /&gt;
&lt;br /&gt;
:Some universities tend to block the SSH port. There should be a workaround to use SSH on some different port. github.com already runs a SSH server on port 443. But that assumes you are using a proxy. It has been found that this hasn't worked with a lot of people, especially those who have a direct connection to the internet ( so some transparent blocking by the ISP ). It would be great if (almost) every KDE developer were to be asked to check if other ports work before KDE made the switch. Otherwise there could be an automated email where the git patches could be sent, and appropriately patched to the right location too.&lt;br /&gt;
&lt;br /&gt;
'''Discussion'''&lt;br /&gt;
&lt;br /&gt;
:http://blog.gitorious.org/2009/10/20/stuck-behind-a-firewall/, and there's always been HTTP cloning (although the current impl. in Git is a bit on the slow side) --johan-s&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Talk to windows guys about git.==&lt;br /&gt;
{{Progress bar|100}}&lt;br /&gt;
'''Owner:'''  aseigo&lt;br /&gt;
&lt;br /&gt;
'''Discussion'''&lt;br /&gt;
&lt;br /&gt;
They aren't huge fans of git, but are using it. They require a single mainline and can't cope with multiple branches. Otherwise, it's workable, even if it will take an adjustment period.&lt;br /&gt;
&lt;br /&gt;
==pre-commit hooks==&lt;br /&gt;
{{Progress bar|100}}&lt;br /&gt;
'''Owner:''' ''(unknown)''&lt;br /&gt;
&lt;br /&gt;
:acltest, docbook, EOL/UTF-8&lt;br /&gt;
&lt;br /&gt;
:A web hook isn't good enough for these because they have to run and return whether to allow the push, for every single push to every KDE repo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Discussion'''&lt;br /&gt;
&lt;br /&gt;
:gitorious guys said they *might* be willing to allow a few scripts on their server for KDE as a special exception, iirc. --chani&lt;br /&gt;
&lt;br /&gt;
:: Yes, at least for basic things, heavier things like doc building would probably have to be mirrored (goes for pre/post) --johan-s&lt;br /&gt;
&lt;br /&gt;
:It turns out that acl and docbook might not be needed so long as web and docs/ stuff stays in svn.&lt;br /&gt;
&lt;br /&gt;
:: Here's where to find the current scripts - http://websvn.kde.org/trunk/kde-common/svn/hooks/ --[[User:Argonel|Argonel]] 23:06, 11 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
::So: this is actually done because it needs no longer to be done? (boud)&lt;br /&gt;
&lt;br /&gt;
::Apparently, so; moving to complete. (aseigo)&lt;br /&gt;
&lt;br /&gt;
= other notes =&lt;br /&gt;
&lt;br /&gt;
==kde-common/accounts==&lt;br /&gt;
&lt;br /&gt;
Someone said: KDE accounts file is no longer necessary---used for mapping svn ID -&amp;gt; email, but we have that now from Gitorious.&lt;br /&gt;
Answer from David Faure: I strongly disagree. We still need a KDE accounts file. This is very useful for finding people's email addresses, and having an overview on the number of active kde contributors; and if we keep it we can even have a kdepim resource again for filling an addressbook from it, for completion in kmail's composer (so you can write to any other kde contributor by just typing his/her name). It's also used for populating automatically the kde-cvs-announce mailing-list, for announcements. kde-common/accounts is our family tree (well, list), let's not get rid of it.&lt;br /&gt;
&lt;br /&gt;
Here's my proposal for a kde-common/accounts replacement for the git era: We write a post-receive hook that looks at every commit and records all known email addresses for a given real name as well as the commit hash and date of when an address was last encountered. We can then present that data in the form of a file like kde-common/accounts, or write a web interface to query it (with nice links to the commits on Gitorious, etc.) --Eike (Sho_ on IRC)&lt;br /&gt;
&lt;br /&gt;
To clear up possible confusion: The author information for a given commit is baked into the commit object itself, and comes from the configuration of the git repository it was created in. It is unrelated to any Gitorious account. Due to the distributed nature of Git, the one who uses his Gitorious account to push a commit need not be the same who created it. If Developer A creates a commit in his local clone and Developer B fetches it into his local clone directly from Developer A's machine and then pushes it into the public repo, the repo will only show a commit from Developer A. The Gitorious website will show that Developer B has pushed up a commit from Developer A, but that data is not contained in the repository. Thus collecting only Gitorious accounts and their mail addresses is insufficient. --Eike&lt;br /&gt;
&lt;br /&gt;
==Random==&lt;br /&gt;
http://mail.kde.org/pipermail/dot-stories/2005-May/000509.html might be a good guide on what docs we need.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
some of this stuff was from the list from GCDS that was in this email [http://markmail.org/message/u6eqfjece7fibfyo http://markmail.org/message/u6eqfjece7fibfyo]&lt;br /&gt;
&lt;br /&gt;
==IRC Meetings==&lt;br /&gt;
* [[Projects/MovetoGit/Meeting1111|Minutes]] of meeting 11 November 2009&lt;br /&gt;
* [[Projects/MovetoGit/Meeting1118|Next meeting]] 18:00, 25 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
= jobs =&lt;br /&gt;
''TODO merge this with the todolists above''&lt;br /&gt;
&lt;br /&gt;
michael jansen: talking to kdesvn-build/mpyne&lt;br /&gt;
:--Done? -&amp;gt; http://kdesvn-build.kde.org/releases/kdesvn-build-1.10.php -- Panagiotis Papadopoulos 1 November 2009&lt;br /&gt;
::Yes, but the __kdesvn-build-remote used in the impl isn't pleasant for users already on git so it still needs more work for them. [[User:Mpyne|Mpyne]] 20:32, 11 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
jonas: domain name &lt;br /&gt;
&lt;br /&gt;
chani: techbase docs for scripty &lt;br /&gt;
&lt;br /&gt;
sebas/lydia/leo: communication with teams! tell people! keeping track that &lt;br /&gt;
everything is being done.&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git</id>
		<title>Development/Git</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git"/>
				<updated>2011-04-28T20:19:26Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: /* Documentation Changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the hub page for all information about the use of Git by KDE.&lt;br /&gt;
&lt;br /&gt;
This page is a work in progress where all new Git material is being organised.  Most of these sections will eventually be moved to their own pages.  Feel free to add stuff.&lt;br /&gt;
&lt;br /&gt;
== KDE and Git ==&lt;br /&gt;
&lt;br /&gt;
This section provides details on using the KDE Git infrastructure.&lt;br /&gt;
&lt;br /&gt;
A primary resource is still http://community.kde.org/Sysadmin/GitKdeOrgManual&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Configuration ===&lt;br /&gt;
&lt;br /&gt;
How to configure Git for use with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
Please see the [[/Configuration|Git Configuration]] page.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Policies ===&lt;br /&gt;
&lt;br /&gt;
KDE policies on Git.  More generic development policies go elsewhere.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Recipes ===&lt;br /&gt;
&lt;br /&gt;
Short recipes for using Git with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
Please see the [[/Recipes|Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Tutorials ===&lt;br /&gt;
&lt;br /&gt;
More in-depth instructions in using Git.&lt;br /&gt;
&lt;br /&gt;
Please see the outdated [[Development/Tutorials/Git|KDE tutorial]] page which needs major revision.&lt;br /&gt;
&lt;br /&gt;
== External Git Resources ==&lt;br /&gt;
&lt;br /&gt;
Links to useful external sites about Git&lt;br /&gt;
&lt;br /&gt;
=== Official Documentation ===&lt;br /&gt;
&lt;br /&gt;
* http://git-scm.com/documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Git for SVN Users ===&lt;br /&gt;
&lt;br /&gt;
* http://git-scm.com/course/svn.html&lt;br /&gt;
* https://git.wiki.kernel.org/index.php/GitSvnCrashCourse&lt;br /&gt;
&lt;br /&gt;
=== Git books ===&lt;br /&gt;
&lt;br /&gt;
* [http://progit.org/book/ Pro Git] - An easy to understand book on git (CC licensed).&lt;br /&gt;
* [http://book.git-scm.com/ The git community book], also as [http://book.git-scm.com/book.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
=== Tutorials ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html The official tutorial introduction to Git]&lt;br /&gt;
* [http://www-cs-students.stanford.edu/~blynn/gitmagic/ Git Magic] - A good intro to git (in several languages!) &lt;br /&gt;
*[http://tom.preston-werner.com/2009/05/19/the-git-parable.html The Git Parable] - Essential reading if you want to truly understand git.&lt;br /&gt;
&lt;br /&gt;
=== Cheat Sheets ===&lt;br /&gt;
&lt;br /&gt;
* [http://cheat.errtheblog.com/s/git Quick reference]&lt;br /&gt;
* [http://zrusin.blogspot.com/2007/09/git-cheat-sheet.html Illustrated git cheat sheet]&lt;br /&gt;
&lt;br /&gt;
= Documentation Changes =&lt;br /&gt;
&lt;br /&gt;
== KDE Documentation Review ==&lt;br /&gt;
&lt;br /&gt;
=== Existing Pages For Review ===&lt;br /&gt;
&lt;br /&gt;
Existing KDE pages about Git, SVN, and/or buildinga KDE that need to be revised.  When revising pages try to split the generic development and revision control policies separate from Git specific stuff.  Do not refer to &amp;quot;the KDE Git Repository&amp;quot; but instead the &amp;quot;KDE Code Repository&amp;quot;.  Lots of small simple pages that are less daunting to newbies and can be linked to from multiple locations are preferred to massive walls of text.&lt;br /&gt;
&lt;br /&gt;
Keep:&lt;br /&gt;
* [[Development/Tutorials/Git/Basics]]&lt;br /&gt;
* [[Development/Tutorials/Git/git-svn]]&lt;br /&gt;
* [[Development/Tutorials/Git/kde-qt]]&lt;br /&gt;
* [[Getting Started/Sources/Amarok Git Tutorial]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On community.kde.org:&lt;br /&gt;
* http://community.kde.org/Sysadmin/GitKdeOrgManual&lt;br /&gt;
* http://community.kde.org/20110213_GitWorkflowAgenda&lt;br /&gt;
* http://community.kde.org/20110213_GitWorkflowAgenda/StevesIdea&lt;br /&gt;
&lt;br /&gt;
On techbase.kde.org:&lt;br /&gt;
* [[Getting Started]]&lt;br /&gt;
* [[Getting Started/Build/KDE4]]&lt;br /&gt;
* [[Getting Started/Build/KDE4.x]]&lt;br /&gt;
* [[Getting Started/Build/KDE4/Prerequisites]]&lt;br /&gt;
* [[Getting Started/Build/KDE4/Windows/subversion]]&lt;br /&gt;
* [[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts]]&lt;br /&gt;
* [[Getting_Started/Build/kdesrc-build]]&lt;br /&gt;
* [[Getting Started/Sources/Anonymous SVN]]&lt;br /&gt;
* [[Getting_Started/Sources/Using_Subversion_with_KDE]]&lt;br /&gt;
* [[Getting_Started/Set_up_KDE_4_for_development]]&lt;br /&gt;
* [[Getting_Started/Using_an_IDE_with_KDE4]]&lt;br /&gt;
* [[Policies/SVN_Commit_Policy]]&lt;br /&gt;
* [[Policies/SVN_Guidelines]]&lt;br /&gt;
* [[Development/Tools]]&lt;br /&gt;
* [[Development/Tutorials/Git/BestPractices]]&lt;br /&gt;
* [[Development/Tutorials/Git/Intermediate]]&lt;br /&gt;
* [[Development/Tutorials/Git/Recipes]]&lt;br /&gt;
* [[Development/Tutorials/Git/Create a patch]]&lt;br /&gt;
* [[Development/Tutorials/Git/decoding-git]]&lt;br /&gt;
* [[Projects/rekonq/Git_with_rekonq_HowTo]]&lt;br /&gt;
* [[Projects/Related/Subversion]]&lt;br /&gt;
* [[Projects/MovetoGit]]&lt;br /&gt;
* [[Projects/MoveToGit/StepsToMove]]&lt;br /&gt;
* [[Contribute/Get a SVN Account]]&lt;br /&gt;
* [[Contribute/First Steps with your KDE SVN Account]]&lt;br /&gt;
&lt;br /&gt;
There are also numerous other pages referring to &amp;quot;the KDE SVN/subversion repositories&amp;quot; which should be replaced with the generic &amp;quot;KDE code repositories&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
There are also numerous translated pages which will need to be updated once the original pages are completed.&lt;br /&gt;
&lt;br /&gt;
=== New Page Structure ===&lt;br /&gt;
&lt;br /&gt;
* [[Getting_Started]]&lt;br /&gt;
* [[Getting_Started/Build]]&lt;br /&gt;
* [[Getting_Started/Build/Environment]]&lt;br /&gt;
* [[Getting_Started/Build/Requirements]]&lt;br /&gt;
* [[Getting_Started/Build/Qt]]&lt;br /&gt;
* [[Getting_Started/Build/KdeSupport]]&lt;br /&gt;
* [[Getting_Started/Build/Windows]]&lt;br /&gt;
* [[Getting_Started/Build/Mac_OS_X]]&lt;br /&gt;
* [[Getting_Started/Run]]&lt;br /&gt;
* [[Getting_Started/Run/Shell]]&lt;br /&gt;
* [[Getting_Started/Run/Nested_Session]]&lt;br /&gt;
* [[Getting_Started/Run/Full_Session]]&lt;br /&gt;
&lt;br /&gt;
=== For Deletion ===&lt;br /&gt;
&lt;br /&gt;
The following pages can now be deleted and/or redirected:&lt;br /&gt;
* [[Development/Tutorials/Git]]&lt;br /&gt;
* [[Development/Tutorials/Git/KdeOnGit]]&lt;br /&gt;
* [[Development/Tutorials/Git/Pushing]]&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Getting_Started/Sources/Amarok_Git_Tutorial</id>
		<title>Getting Started/Sources/Amarok Git Tutorial</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started/Sources/Amarok_Git_Tutorial"/>
				<updated>2011-04-28T20:18:16Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{warning|This page is yet to be reviewed for changes required by the migration to Git.  Information and commands on this page may no longer be valid and should be used with care. Please see the [[Development/Git|KDE Git hub page]] for more details. }}&lt;br /&gt;
&lt;br /&gt;
Amarok is now developed in a Git repository instead of SVN. This was done to help get into place all the needed infrastructure to convert all of KDE, including documentation. &amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Crucial Step 0  =&lt;br /&gt;
&lt;br /&gt;
''For Windows you will need to follow some more steps. [http://techbase.kde.org/Getting_Started/Build/KDE4/Windows/subversion#Setup_Git Found here]''.&lt;br /&gt;
&lt;br /&gt;
 git config --global user.name &amp;quot;Your Legal First and Last Name Here&amp;quot;&lt;br /&gt;
 git config --global user.email you@yourdomain.example.com&lt;br /&gt;
&lt;br /&gt;
Run these commands before you even ponder ever in your life pushing to a Git repo.&lt;br /&gt;
&lt;br /&gt;
= Getting started with git  =&lt;br /&gt;
&lt;br /&gt;
Depending on whether you simply want to test and follow Amarok development, write the occasional patch, or are an Amarok developer, the steps to use the repo are different. &lt;br /&gt;
&lt;br /&gt;
== Follow and test the latest development code  ==&lt;br /&gt;
&lt;br /&gt;
 git clone git://anongit.kde.org/amarok&lt;br /&gt;
&lt;br /&gt;
This creates an 'amarok' directory. cd into that and use it like normal. And when you want to update: &lt;br /&gt;
&lt;br /&gt;
 git pull&lt;br /&gt;
&lt;br /&gt;
will download the new changes.&lt;br /&gt;
&lt;br /&gt;
== Patch Contributions  ==&lt;br /&gt;
&lt;br /&gt;
This is still a work in progress, as we work on getting ReviewBoard set up. In the meantime, hold on to any patches, or email them to amarok-devel@kde.org -- just be sure to follow the thread to ensure that it doesn't get lost  :-)&lt;br /&gt;
&lt;br /&gt;
If you want to use a local clone for working on bug fixes or features, do the following:&lt;br /&gt;
&lt;br /&gt;
*Create a branch for each new feature or bug fix you want to work on:&lt;br /&gt;
&lt;br /&gt;
 git branch my_feature_branch&lt;br /&gt;
&lt;br /&gt;
*Switch to the new branch:&lt;br /&gt;
&lt;br /&gt;
 git checkout my_feature_branch&lt;br /&gt;
&lt;br /&gt;
*Work, fix that bug or add the feature...&lt;br /&gt;
&lt;br /&gt;
 ...work on this checkout - follow the normal development workflow...&lt;br /&gt;
&lt;br /&gt;
*Commit it to your local checkout:&lt;br /&gt;
&lt;br /&gt;
 git commit -a&lt;br /&gt;
&lt;br /&gt;
*You can follow the main development branch easily by adding it as remote branch:&lt;br /&gt;
&lt;br /&gt;
 git remote add upstream git://git.kde.org/amarok&lt;br /&gt;
&lt;br /&gt;
*Update by pulling from the remote:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase upstream master&lt;br /&gt;
&lt;br /&gt;
*Remember to use one branch per feature/bug fix!&lt;br /&gt;
&lt;br /&gt;
== Amarok Developers  ==&lt;br /&gt;
&lt;br /&gt;
=== Account Setup ===&lt;br /&gt;
&lt;br /&gt;
If you don't already have a SSH account to the KDE SVN, please file a sysadmin bug on http://bugs.kde.org and provide your logon and your SSH pub key.&lt;br /&gt;
&lt;br /&gt;
=== Setup Amarok Clone  ===&lt;br /&gt;
&lt;br /&gt;
Once you have a KDE development SSH account, a basic local clone for development work that allows push access can be created by running:&lt;br /&gt;
&lt;br /&gt;
 git clone git@git.kde.org:amarok&lt;br /&gt;
&lt;br /&gt;
This will place a clone in the &amp;quot;amarok&amp;quot; subdirectory of the current folder.&lt;br /&gt;
&lt;br /&gt;
If for some reason port 22 will not work for you (such as if you behind a firewall allowing only ports 80 and 443 through) you can use port 443 on git.kde.org by specifying the port in ~/.ssh/config:&lt;br /&gt;
&lt;br /&gt;
 Host git.kde.org&lt;br /&gt;
     Port 443&lt;br /&gt;
&lt;br /&gt;
You can also create your own server-side clone of the Amarok repository and store your changes there. Others can then pull from your repository or add your repository as a remote.&lt;br /&gt;
&lt;br /&gt;
Please note that personal clones are using KDE infrastructure and meant for KDE-relevant work, and as such you cannot change the access policy that allows everyone to read these clones (but you can change who can write to them, as explained below). Please do not create clones to e.g. make changes to customize code for your company. If you want to do this, host your clone on Gitorious.org or GitHub.com instead.&lt;br /&gt;
&lt;br /&gt;
To create a personal clone, run the following command, substituting your KDE username and a reponame of your choice, *without* a trailing &amp;quot;.git&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 ssh git@git.kde.org clone amarok clones/amarok.git/[username]/[reponame]&lt;br /&gt;
&lt;br /&gt;
After that, you will have a fully functioning repository of your own at git://git.kde.org/clones/amarok.git/[username]/[reponame] or git@git.kde.org:clones/amarok.git/[username]/[reponame] for read-only and push URLs, respectively.&lt;br /&gt;
&lt;br /&gt;
You can delete this repository at any time by running the &amp;quot;destroy&amp;quot; command:&lt;br /&gt;
&lt;br /&gt;
 ssh git@git.kde.org destroy clones/amarok.git/[username]/[reponame]&lt;br /&gt;
&lt;br /&gt;
==== Rights Management ====&lt;br /&gt;
&lt;br /&gt;
When your clone is created, it is setup to allow all KDE developers push access to it. This is in keeping with KDE's everyone-can-write-anywhere philosophy. You are strongly encouraged to keep this default.&lt;br /&gt;
&lt;br /&gt;
However, we understand that at times you may want to ensure that the work you are doing is not modified by anyone else until you are finished, or reach a milestone, or some such thing.&lt;br /&gt;
&lt;br /&gt;
As such, you can adjust who can write to your cloned repository.&lt;br /&gt;
&lt;br /&gt;
To see the current permissions, use the &amp;quot;getperms&amp;quot; command:&lt;br /&gt;
&lt;br /&gt;
 ssh git@git.kde.org getperms clones/amarok.git/mitchell/testrepo&lt;br /&gt;
 RW = @all&lt;br /&gt;
&lt;br /&gt;
@all is a special groupname that indicates all KDE developers. It is the only special name allowed in the permissions.&lt;br /&gt;
&lt;br /&gt;
To modify them, create a file named anything you like -- I'll use &amp;quot;myperms&amp;quot;. In &amp;quot;myperms&amp;quot; enter those that should have RW access by their KDE user account name. The RW statements are cumulative, or can specify multiple user accounts on one line:&lt;br /&gt;
&lt;br /&gt;
 RW = hein bcooskley&lt;br /&gt;
 RW = toma&lt;br /&gt;
&lt;br /&gt;
At the end of this, the total push permissions will be comprised of *you* (the creator of the clone, in my case &amp;quot;mitchell&amp;quot;), hein, bcooskley *and* toma. Note that *you* are the only one that can push and delete new branches and tags; the other contributors only have push access. In other words, you are your own release manager for your clone.&lt;br /&gt;
&lt;br /&gt;
Now, use the &amp;quot;setperms&amp;quot; command to set the permissions, passing in the file you created:&lt;br /&gt;
&lt;br /&gt;
 ssh git@git.kde.org setperms clones/amarok.git/mitchell/testrepo &amp;lt; myperms&lt;br /&gt;
 New perms are:&lt;br /&gt;
 RW = hein bcooksley&lt;br /&gt;
 RW = toma&lt;br /&gt;
&lt;br /&gt;
=== Basic Development  ===&lt;br /&gt;
&lt;br /&gt;
90% of the time this is all that is needed: &lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 #hack, compile, build. It works!&lt;br /&gt;
 git status #to check if you want to commit all the modified files&lt;br /&gt;
 git commit -a&lt;br /&gt;
 git log&lt;br /&gt;
 git push&lt;br /&gt;
&lt;br /&gt;
''git pull --rebase'' downloads the latest changes. The --rebase option takes any unpushed local commits and applies them to the latest code, moving it to the top of the history. It is the equivalent of ''git pull; git rebase origin/master''. See the &amp;quot;1. Rebase&amp;quot; section of [http://magazine.redhat.com/2008/05/02/shipping-quality-code-with-git/ Shipping Quality Code] for a good explanation of what rebase does. &lt;br /&gt;
:If you have uncommited changes you can not rebase. Instead you can ''git stash'', do the rebase, and then ''git stash apply''.&lt;br /&gt;
&lt;br /&gt;
''git status'' will tell you what files are modified. If you created a new file, use ''git add'' on it to &amp;quot;track&amp;quot; it. If there are some junk files, you can add a regexp to .gitignore in the root. &lt;br /&gt;
&lt;br /&gt;
''git commit -a'' will commit all unmodified files. You can use ''git add'' and then simply ''git commit'' instead if you wish to commit only certain files.&lt;br /&gt;
&lt;br /&gt;
Use ''git log'' to review the local unpushed commits. Possibly also useful is ''git diff origin/master'', which will give you a diff between the current checkout and what is in the central repo. &lt;br /&gt;
&lt;br /&gt;
''git push'' pushes all the local commits to the central repo.&lt;br /&gt;
&lt;br /&gt;
= Follow remote feature branch =&lt;br /&gt;
With git, feature branches are cheap and easy. Here's how to follow a feature branch someone else has already setup.&lt;br /&gt;
&lt;br /&gt;
Remember that you can't push to git:// URL's when picking what URL to use.&lt;br /&gt;
&lt;br /&gt;
 git remote add jeff git://git.kde.org/clones/amarok.git/mitchell/pudaction.git&lt;br /&gt;
 git remote update&lt;br /&gt;
 git branch -a&lt;br /&gt;
 git branch jeff-pud jeff/pudaction-removal&lt;br /&gt;
 git checkout jeff-pud&lt;br /&gt;
 #and later you want to switch back to the mainline&lt;br /&gt;
 git checkout master&lt;br /&gt;
&lt;br /&gt;
''git remote add'' adds a new remote named 'jeff' with the given URL. Think of remotes like bookmarks: you could always just explicitly pull from a URL instead. &lt;br /&gt;
&lt;br /&gt;
''git remote update'' downloads all the remotes you have without merging them, including the remote you just defined. This is a handy command if you're tracking multiple remotes.&lt;br /&gt;
&lt;br /&gt;
''git branch -a'' this lists all the branches you have, including the remote branches. Find the new branch you want to look at.&lt;br /&gt;
&lt;br /&gt;
''git branch'' this command creates a local branch called 'jeff-pud' that tracks the remote branch 'pud-action/pudaction-removal'. You figured out the name of the latter in the previous command.&lt;br /&gt;
&lt;br /&gt;
''git checkout'' is how you switch between branches.&lt;br /&gt;
&lt;br /&gt;
 Recommended reading  =&lt;br /&gt;
&lt;br /&gt;
*[http://tom.preston-werner.com/2009/05/19/the-git-parable.html The Git Parable] ''Background information that will help you understand git and distributed revision control systems in general'' &lt;br /&gt;
*[http://git.or.cz/course/svn.html Git to SVN crash course] ''5 minute introduction to git for experienced SVN users'' &lt;br /&gt;
*[http://www.redhatmagazine.com/2008/05/02/shipping-quality-code-with-git/ Shipping Quality Code with Git] ''Guide to cleanup before a push'' &lt;br /&gt;
*[http://eagain.net/articles/git-for-computer-scientists/ Git for Computer Scientists] ''Quick introduction to git internals for people who are not scared by words like Directed Acyclic Graph.'' &lt;br /&gt;
*[http://www.youtube.com/watch?v=4XpnKHJAok8 Linus Torvalds on Git] ''Why git? answered by the man that started it.'' &lt;br /&gt;
*[http://gitready.com/ Git Ready!] ''Learn git one commit at a time'' &lt;br /&gt;
*[http://book.git-scm.com Git Community Book] ''An online book covering git from the basics to some advanced features'' &lt;br /&gt;
*[http://www-cs-students.stanford.edu/~blynn/gitmagic Git Magic] ''Covers some concepts and common usage patterns'' &lt;br /&gt;
*[http://ktown.kde.org/~zrusin/git/git-cheat-sheet.svg Zack Rusin's git cheat sheet] &lt;br /&gt;
*[http://cheat.errtheblog.com/s/git Git cheat sheet] ''Yet another git cheat sheet'' &lt;br /&gt;
*[http://sysmonblog.co.uk/misc/git_by_example git by example] ''git command reference and explanation'' &lt;br /&gt;
*[http://jonas.nitro.dk/git/quick-reference.html Git Quick Reference] ''Yet another reference of the most used git commands''&lt;br /&gt;
&lt;br /&gt;
= Todo for this doc  =&lt;br /&gt;
&lt;br /&gt;
*creating feature branches &lt;br /&gt;
*history manipulation. rebase -i, commit --append, and what to do when things go wrong. Probably its own page.&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials_(sl)</id>
		<title>Development/Tutorials (sl)</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials_(sl)"/>
				<updated>2011-04-28T20:17:44Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Development/Tutorials}}&lt;br /&gt;
&lt;br /&gt;
Vodiči so najhitrejša pot, da ugotovite kaj bo KDE naredil za vas in kako lahko to uporabite. Tu je seznam trenutno dosegnljivih vodičev '''za KDE4'''. Material za starejše izdaje je na dnu strani&lt;br /&gt;
&lt;br /&gt;
== Uvod v programiranje s KDE4 ==&lt;br /&gt;
Ta serija vodičev je za tiste, ki vam je programiranje s KDE popolnoma neznano.&lt;br /&gt;
;[[Development/Tutorials/First program|Pozdrav svetu]]&lt;br /&gt;
:''Začetni uvod v osnove programiranja s KDE4''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using KXmlGuiWindow|Ustvarjanje glavnega okna]]&lt;br /&gt;
:''Ta vodič pokaže čarovnijo najpomembnješe stvari v programu: njegovega glavnega okna.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using KActions|Dejanja (KActions)]]&lt;br /&gt;
:''Dodajanje dejanj menijem in orodnim vrsticam.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Saving and loading|Shranjevanje in odpiranje]]&lt;br /&gt;
:''Uvede knjižnico KIO s podporo odpiranju in shranjevanju datotek.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KCmdLineArgs|Argumenti ukazne vrstice]]&lt;br /&gt;
:''Doda možnost odpiranja datotek iz ukazne vrstice.''&lt;br /&gt;
&lt;br /&gt;
== Osnove ==&lt;br /&gt;
;[[Development/Tutorials/KDE4 Porting Guide|Prenos programa na KDE4]]&lt;br /&gt;
:''Pomoč pri prenašanju programov s Qt3/KDE3 na Qt4/KDE4''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/CMake|Uvod v CMake]]&lt;br /&gt;
:''Uporaba sistema za izgradnjo programov CMake.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Common Programming Mistakes|Pogoste napake]]&lt;br /&gt;
:''Različne pogoste napake pri programiranju s Qt in KDE in napotki za njih izogib.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using Qt Designer|Uporaba Qt Designerja za uporabniške vmesnike]]&lt;br /&gt;
:''Ustvarjanje datotek z uporabniškim vmesnikom (UI) in njihova uporaba v KDE programu.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Creating Libraries|Ustvarjanje knjižnic]]&lt;br /&gt;
:''Dodajanje knjižnice sistemu za izgradnjo in priprava kode.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Session_Management|Upravljanje sej]]&lt;br /&gt;
:''Naj se vaš program zaveda sej okenskega sistema X''&lt;br /&gt;
&lt;br /&gt;
== Testiranje in razhroščevanje ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Debugging|Razhroščevanje vašega programa]]&lt;br /&gt;
:''Namigi, orodja in tehnike za uspešen boj proti hroščem ''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Unittests|Enotski testi za Qt4 in KDE4 z uporabo QTestLib]] ([http://developer.kde.org/documentation/tutorials/writingunittests/writingunittests.html Izvirni dokument])&lt;br /&gt;
:''Vodič avtorja [mailto:bradh@frogmouth.net Brada Hardsa], ki opisuje pisanje enotskih testov z ogrodjem QTestLib. Vodič je še vedno v razvoju in se spreminja.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Code_Checking|Pol-avtomatski načini iskanja napak v kodi]]&lt;br /&gt;
:''Tehnike za iskanje napak v kodi s KDE.''&lt;br /&gt;
&lt;br /&gt;
== Upravljanje nastavitev programa s KConfig ==&lt;br /&gt;
;[[Development/Tutorials/KConfig|Uvod v KConfig]]&lt;br /&gt;
:''Pregled razredov KConfig in njih uporava v vašem programu.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using KConfig XT|Uporabat KConfig XT]]&lt;br /&gt;
:''Vodič za učinkovito rabo ogrodja KConfig XT.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Updating KConfig Files|Posodabljanje datotek KConfig]]&lt;br /&gt;
:''Vodič za sprotno posodabljanje sprememb v programu z obstoječo datoteko z nastavitvami.''&lt;br /&gt;
&lt;br /&gt;
== Services: Applications and Plugins ==&lt;br /&gt;
;[[Development/Tutorials/Services/Introduction|Introduction to the Services Framework]]&lt;br /&gt;
:''An overview of the services framework in KDE and what it provides the application developer. Covers the system configuration cache (SyCoCa), the source data files and what the indexed information can be used for.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Services/Traders|Finding Services Using Trader Queries]]&lt;br /&gt;
:''How to find services, such as plugins or mimetypes, that are indexed in the SyCoCa using Trader Query Syntax''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Services/Plugins|Creating and Loading Plugins Using KService]]&lt;br /&gt;
:''Learn how to define custom plugin types, find installed plugins (including 3rd party plugins) and load them in an easy and portable fashion using KService.''&lt;br /&gt;
&lt;br /&gt;
== Localization ==&lt;br /&gt;
See also [[Localization|Localization portal]].&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Localization/Unicode|Introduction To Unicode]]&lt;br /&gt;
:''An introduction to what Unicode is as well as how to handle Unicode data in KDE applications.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n|Writing Applications With Localization In Mind]]&lt;br /&gt;
:''This tutorial covers what localization is, why it's important and how to ensure your application is ready to be localized. A must read for all application developers.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Mistakes|Avoiding Common Localization Pitfalls]]&lt;br /&gt;
:''There are several common mistakes that prevent applications from being properly localized. Find out what they are and how to easily avoid them in this tutorial.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/Building KDE's l10n Module|Building KDE's Localization Module]]&lt;br /&gt;
:''Building and installing language support from KDE's localization (l10n) module is a good idea for those working on applications in the main KDE repository. Doing so will allow you to test your application in another language and spot problem areas. Learn how to do just that in this tutorial.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Build Systems|Incorporating i18n Into the Build System]]&lt;br /&gt;
:''Once your application is ready to be localized, the next step is to ensure that translation files are built automatically and kept up to date. This tutorial covers the necessary CMakeFiles.txt additions as well the process of distributing the resulting message catalogs with your application.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Challenges|Common i18n Challenges and Solutions]]&lt;br /&gt;
:''This tutorial covers challenges that you may eventually run into such as translating handbooks and other data that exists outside of the source code, merging and handling obsolete .po files, dealing with freezes, coding in languages other than English and creating independent releases of or moving applications between KDE modules.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n_Semantics|Semantic Markup of Messages]]&lt;br /&gt;
:''To ensure consistent presentation and more meaningful representations of messages in applications, semantic markup can be applied to messages marked for translation using the KUIT system. This tutorial describes how this system works.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Krazy|Automated i18n Code Checking]]&lt;br /&gt;
:''The Krazy code checker scans KDE's code and reports common i18n mistakes.''&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/API_Documentation|API Documentation]]&lt;br /&gt;
:''This tutorial explains how to document your APIs properly.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Man_Pages|Man Pages]]&lt;br /&gt;
:''Writing and Generating Reference Manual Pages.''&lt;br /&gt;
&lt;br /&gt;
== Application Automation and Scripting ==&lt;br /&gt;
&lt;br /&gt;
=== D-Bus ===&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Introduction|Introduction to D-Bus]]&lt;br /&gt;
:''A straight-forward introduction to the core concepts in D-Bus from an application developer's perspective, this tutorial covers what D-Bus is and how it can be used by applications.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Accessing Interfaces|Accessing D-Bus Interfaces]]&lt;br /&gt;
:''A step-by-step guide to calling D-Bus methods and connecting to D-Bus signals using QtDBus.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Intermediate_D-Bus|Intermediate D-Bus]]&lt;br /&gt;
:''Tips to make use of QtDBus when faced with problematic real-world interfaces.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Creating Interfaces|Creating D-Bus Interfaces]]&lt;br /&gt;
:''Learn how to expose functionality in your application by creating and using custom D-Bus interfaces. Covers generating the XML descriptions, instantiating interfaces at run time and setting up the build system with CMake.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Autostart Services|D-Bus Autostart Services]]&lt;br /&gt;
:''Turn your application into a D-Bus autostart service with this tutorial. This D-Bus feature, also known as &amp;quot;D-Bus service activation&amp;quot;, will ensure that even when your application isn't running that D-Bus calls made to it will work by relying on the D-Bus daemon itself to start your app if and when needed.''&lt;br /&gt;
; [[Development/Tutorials/Porting_to_D-Bus|Porting from DCOP to D-Bus]]&lt;br /&gt;
: ''Port your applications from DCOP to D-Bus with this handy guide.''&lt;br /&gt;
&lt;br /&gt;
=== Konqueror ===&lt;br /&gt;
; [[Development/Tutorials/Creating Konqueror Service Menus|Creating Konqueror Service Menus]]&lt;br /&gt;
:''This tutorial shows you how to create mimetype-specific actions in Konqueror's context menu (aka &amp;quot;servicemenus&amp;quot;).''&lt;br /&gt;
&lt;br /&gt;
=== Kross ===&lt;br /&gt;
; [[Development/Tutorials/Kross/Introduction|Introduction to Kross]]&lt;br /&gt;
:''An introduction to the Kross Scripting Framework.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Hello_World|Hello World]]&lt;br /&gt;
:''A first application with working kross code.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Call_Functions_in_Kross|Calling Functions in Kross]]&lt;br /&gt;
:''Simple demonstration of calling scripting functions''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Connecting_Signals_and_slots_in_Kross|Connecting Signals and Slots in Kross]]&lt;br /&gt;
:''Simple demonstration of connecting object signals with script slots''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Scripts-as-Plugins|Scripts as Plugins with Kross]]&lt;br /&gt;
:''This tutorial provides a step-by-step introduction how to integrate scripts as plugins into a KDE application.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Script-Actions|Placing script actions in your application menus ]]&lt;br /&gt;
:''Simple demonstration on how to extend you application menus to execute script files.''&lt;br /&gt;
&lt;br /&gt;
{{:KOffice/Plugin Tutorials}}&lt;br /&gt;
&lt;br /&gt;
=== SuperKaramba ===&lt;br /&gt;
; [[Development/Tutorials/SuperKaramba|SuperKaramba Tutorial]]&lt;br /&gt;
:''This tutorial provides an overview of SuperKaramba, theme files and scripting with Python, Ruby and JavaScript.''&lt;br /&gt;
&lt;br /&gt;
== Plugins and KParts ==&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Writing kontact plugins|Writing kontact plugins]]:''Kontact plugins are KParts. This tutorial describes how you can write one.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Using KParts|Using KParts]]:''Learn how to load a KPart into an application window.''&lt;br /&gt;
&lt;br /&gt;
== Search and Metadata ==&lt;br /&gt;
&lt;br /&gt;
=== Strigi ===&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Writing file analyzers|Writing file analyzers]]&lt;br /&gt;
:''File analyzers extract data from files to display in the file dialogs and file managers. The data gathered this way is also used to search for files. KDE4 allows the use of multiple analyzers per file type. This tutorial describes how you can write new analyzers.''&lt;br /&gt;
&lt;br /&gt;
=== [http://nepomuk.kde.org Nepomuk] ===&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/Quickstart|Nepomuk Quickstart]]&lt;br /&gt;
:''How to use Nepomuk resources in a quick and painless way without much fuss.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/RDFIntroduction|RDF and Ontologies in Nepomuk]]&lt;br /&gt;
:''An introduction to RDF and the usage of ontologies in Nepomuk.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/Resources|Handling Resources with Nepomuk]]&lt;br /&gt;
:''Nepomuk is the KDE library which provides easy access to metadata in the Nepomuk system. Learn how to make your application create and read metadata using the Nepomuk system.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/ResourceGenerator|Using the Nepomuk Resource Generator]]&lt;br /&gt;
:''Nepomuk includes a resource generator which creates convenience classes for handling metadata.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/AdvancedQueries|Advanced Queries]]&lt;br /&gt;
:''The real power of Nepomuk can only be exposed when performing fancy queries on the data repository. This tutorial provides an introduction to semantic and full text queries in Nepomuk.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/NepomukServer|The Nepomuk Server and the Architecture of the Nepomuk subsystem]]&lt;br /&gt;
:''The Nepomuk Server hosts the main Nepomuk data repository and can be accessed directly via a Soprano API.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/NepomukServices|Nepomuk Services]]&lt;br /&gt;
:''The Nepomuk Server manages a set of Nepomuk services.''&lt;br /&gt;
:* [[Development/Tutorials/Metadata/Nepomuk/StorageService|Storage Service]] ''The probably most important service hosts the Nepomuk data repository using [http://soprano.sourceforge.net Soprano].''&lt;br /&gt;
:* [[Development/Tutorials/Metadata/Nepomuk/OntologyLoaderService|Ontology Loader]] ''Makes sure installed ontologies such as RDF, RDFS, NRL, or Xesam are loaded into the storage repository.''&lt;br /&gt;
:* [[Development/Tutorials/Metadata/Nepomuk/FileWatchService|File Watch Service]] ''Monitors the file system for changes and updates the file resource paths and URIs in Nepomuk.''&lt;br /&gt;
:* [[Development/Tutorials/Metadata/Nepomuk/StrigiService|Strigi Service]] ''Controls Strigi, the file indexing tool which extracts metadata from files and stores it into the storage repository.''&lt;br /&gt;
:* [[Development/Tutorials/Metadata/Nepomuk/QueryService|Query Service]] ''Provides persistant query folders.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/TipsAndTricks|Nepomuk Tips and Tricks]]&lt;br /&gt;
:''A set of tips and tricks for development with Nepomuk and Soprano. This is a must-read if you intend to use Nepomuk in your application or hack on it directly.''&lt;br /&gt;
&lt;br /&gt;
== Hardware Awareness (Solid) ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Solid_Tutorials|Introduction to Solid]]&lt;br /&gt;
:''An introduction to using the Solid hardware discovery and interaction system in KDE applications.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Solid_Network_Tutorial|Accessing Network Information]]&lt;br /&gt;
:''How to use the Solid system to get information about the network''&lt;br /&gt;
&lt;br /&gt;
== Privileged Applications (PolicyKit) ==&lt;br /&gt;
; [[Development/Tutorials/PolicyKit/Introduction|Introduction to PolicyKit]]&lt;br /&gt;
:''A straight-forward introduction to what PolicyKit is, and how it can be useful for your next application requiring super-user privileges or user authentication''&lt;br /&gt;
; [[Development/Tutorials/PolicyKit/Helper_HowTo|Using the caller-helper model to perform actions as root]]&lt;br /&gt;
:''This tutorial will teach you how to get your application to perform some actions as root in a completely safe and easy manner, if the user is authorized to, by using PolicyKit and the caller-helper technique''&lt;br /&gt;
; [[Development/Tutorials/PolicyKit/KCM_HowTo|Getting root privileges in KCM Modules]]&lt;br /&gt;
:''This tutorial will teach you how to create KCModules able to save settings as root''&lt;br /&gt;
&lt;br /&gt;
== Multimedia (Phonon) ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Phonon/Introduction|Phonon]]&lt;br /&gt;
:''How to start with the multimedia API''&lt;br /&gt;
&lt;br /&gt;
:''How to compile and use Phonon and its GStreamer backend on Linux using Qt 4.3.x''&lt;br /&gt;
::''This article gives you a quick brief of how you can use checkout, compile Phonon and its GStreamer backend on GNU/Linux with just Qt 4.3.x. Towards the end, the article also describes how a developer can make use of Phonon to create simple audio and video players. You can read the article [http://www.vcreatelogic.com/oss/docs/CompilingPhononOnLinux.pdf here]. You can download the editable OpenDocumentText file from [http://www.prashanthudupa.com/phonon/CompilingPhononOnLinux.odt here].''&lt;br /&gt;
&lt;br /&gt;
== Plasma ==&lt;br /&gt;
&lt;br /&gt;
See [[Development/Tutorials/Plasma]] for Plasma tutorials.&lt;br /&gt;
&lt;br /&gt;
== Communication (Decibel) ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Decibel/GettingStarted|Getting started with Decibel]]&lt;br /&gt;
:''This tutorial describes how to set up Decibel.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Decibel/Handling_TextChannels|Handling TextChannels]]&lt;br /&gt;
:''This tutorial introduces the basics of handling incoming TextChannels by guiding you through building a simple text chat application.''&lt;br /&gt;
&lt;br /&gt;
== Personal Information Management (Akonadi) ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Akonadi/Application|Using Akonadi in Applications]]&lt;br /&gt;
:''Displaying and modifying data provided by Akonadi''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Akonadi/Resources|Developing Akonadi Resources]]&lt;br /&gt;
:''Akonadi Resources are agent programs which transport PIM data between Akonadi and a backend (files, servers, etc)''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Akonadi/SerializerPlugin|Using custom data types with Akonadi]]&lt;br /&gt;
:''Akonadi can handle arbitrary data as item payloads through the use of a plugin based serialization framework''&lt;br /&gt;
&lt;br /&gt;
== Kate / Kwrite ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Kate/KTextEditor Plugins|Getting started with KTextEditor plugins]]&lt;br /&gt;
:''Creating your first KTextEditor plugin''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Kate/KTextEditor_Plugins_Advanced|Developing a plugin with configuration dialog]]&lt;br /&gt;
:''Adding a configuration dialog to the Time &amp;amp; Date example''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Kate/KTextEditor_Example|A small Editor]]&lt;br /&gt;
:''Create a small application using KTextEditor''&lt;br /&gt;
&lt;br /&gt;
==Printing==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Printing Hello World|Hello World]]&lt;br /&gt;
:''Introduction to the KDE printing system''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Printing Print Dialog|Print Dialog]]&lt;br /&gt;
:''Using the KDE print dialog''&lt;br /&gt;
&lt;br /&gt;
== kioslaves ==&lt;br /&gt;
* [[Development/Tutorials/KIO Slaves/Using KIO Slaves in your Program|Using kioslaves in your Program]]&lt;br /&gt;
* [[Development/Tutorials/KIO Slaves/Hello World|Creating a Hello-World kioslave]]&lt;br /&gt;
&lt;br /&gt;
== Get Hot New Stuff ==&lt;br /&gt;
; [[Development/Tutorials/K_Hot_New_Stuff2|New introduction to Get Hot New Stuff 2]]&lt;br /&gt;
:''A short tutorial about how to use KHotNewStuff2 in your application.''&lt;br /&gt;
&lt;br /&gt;
* old links for KNS1 content:&lt;br /&gt;
; [[Development/Tutorials/Introduction to Get Hot New Stuff|Introduction to Get Hot New Stuff]]&lt;br /&gt;
:''An introduction to the developer-friendly network update system that allows KDE applications to fetch new application data at runtime in a user friendly manner.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KNewStuffSecure|KNewStuff Secure]] ([http://developer.kde.org/documentation/tutorials/knewstuffsecure/index.html Original Link])&lt;br /&gt;
:''Tutorial showing how to share resources in a secured way (KDE 3.4 and later).''  By Andr&amp;amp;#225;s Mantia &amp;amp;lt;amantia@kde.org&amp;amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Goya ==&lt;br /&gt;
; [[Development/Tutorials/Introduction to Goya usage|Introduction to Goya usage]]&lt;br /&gt;
:''An introduction for the Goya subsystem usage, which allows you to easily add widgets to your itemviews and connect their signals to your code, as they were real widgets.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Introduction to Goya usage 2|Introduction to Goya usage (part 2)]]&lt;br /&gt;
:''The second part of the tutorial, with a slightly more complex example than the first part.''&lt;br /&gt;
&lt;br /&gt;
== Other programming languages ==&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
;[http://www.learningpython.com/2008/09/20/an-introduction-to-pyqt/ An Introduction to PyQt]&lt;br /&gt;
:''Starting off''&lt;br /&gt;
&lt;br /&gt;
;[http://lateral.netmanagers.com.ar/stories/BBS47.html PyQt by Example]&lt;br /&gt;
:''Another introduction to PyQt''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Languages/Python/PyKDE_WebKit_Tutorial|PyKDE WebKit Tutorial]]&lt;br /&gt;
:''A simple web browser application in PyKDE''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Python introduction to signals and slots|101 Introduction to signals and slots]]&lt;br /&gt;
:''A simple introduction to Qt's signal and slot architecture.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Languages/Python/PyKDE_DBus_Tutorial|PyKDE DBus Tutorial]]&lt;br /&gt;
:''An introduction to DBus communication using PyKDE''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
;[http://developer.kde.org/language-bindings/ruby/kde3tutorial/index.html KDE Ruby Korundum tutorial]&lt;br /&gt;
:''A ruby version of Antonio Larrosa Jim&amp;amp;eacute;nez's KDE tutorial by Richard Dale. See the [http://developer.kde.org/language-bindings/ruby/index.html Ruby Developers Corner] for Qt tutorials and other info.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Qt4_Ruby_Tutorial|Qt4 Ruby Tutorial]]&lt;br /&gt;
:''Trolltech's fabulous introductory tutorial to Qt, translated to Ruby.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Plasma/RubyApplet|Creating a Plasma Widget in Ruby]]&lt;br /&gt;
:''Tutorial that shows how to create your first Plasma Applet using the Ruby language.''&lt;br /&gt;
&lt;br /&gt;
=== Shell ===&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Shell_Scripting_with_KDE_Dialogs|Shell Scripting with KDE dialogs]] ([http://developer.kde.org/documentation/tutorials/kdialog/t1.html Original Link]) &lt;br /&gt;
:''Tutorial by [mailto:bradh@frogmouth.net Brad Hards] that describes how to use KDE dialogs in shell scripts with kdialog. It is presented as an example based tutorial.''&lt;br /&gt;
&lt;br /&gt;
== Graphics Programming ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Graphics/Performance|QPainter Perfomance]]&lt;br /&gt;
:''Hints on avoiding common mistakes leading to poor performance when using QPainter''&lt;br /&gt;
&lt;br /&gt;
== Using the KDE Games Libraries ==&lt;br /&gt;
;[[Development/Tutorials/Games/KStandardGameAction| KStandardGameAction]]&lt;br /&gt;
:''Using libkdegames to make your game fit the kdegames standard''&lt;br /&gt;
;[[Development/Tutorials/Games/Highscores| Highscores]]&lt;br /&gt;
:''Implementing a simple highscore table into your game''&lt;br /&gt;
;[[Development/Tutorials/Games/Theme Selector| Theme Selector]]&lt;br /&gt;
:''Using the libkdegames theme selection dialog''&lt;br /&gt;
;[[Development/Tutorials/Games/Palapeli Patterns| Palapeli Patterns]]&lt;br /&gt;
:''Creating a pattern for Palapeli''&lt;br /&gt;
=== KGLEngine ===&lt;br /&gt;
;[[Development/Tutorials/Games/kglengine/kglengine-simpleBox| installation and your first KGLItem]]&lt;br /&gt;
:''start your first kglengine application''&lt;br /&gt;
;[[Development/Tutorials/Games/kglengine/kglengine-motion| item motion]]&lt;br /&gt;
:''how to move kglitem''&lt;br /&gt;
;[[Development/Tutorials/Games/kglengine/kglengine-collision| collision detection]]&lt;br /&gt;
:''how to detect collision and interact ''&lt;br /&gt;
;[[Development/Tutorials/Games/kglengine/kglengine-texture| texture and color]]&lt;br /&gt;
:''apply texture and color for your items ''&lt;br /&gt;
;[[Development/Tutorials/Games/kglengine/kglengine-effects| particles and shadow effects]]&lt;br /&gt;
:''add some nice effects ''&lt;br /&gt;
;[[Development/Tutorials/Games/KGLEngine2d| kglpong]]&lt;br /&gt;
:''Now use our knowledge to make a pong''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== KALEngine ===&lt;br /&gt;
;[[Development/Tutorials/Games/KALEngine| Play hello word sound]]&lt;br /&gt;
:''Using KALEngine for games sound development using openAL''&lt;br /&gt;
;[[Development/Tutorials/Games/KALEngine-music| Play music]]&lt;br /&gt;
:''Using KALEngine to play music in a stream''&lt;br /&gt;
&lt;br /&gt;
== Using the KDE PIM Libraries ==&lt;br /&gt;
;[[Development/Tutorials/PIM/ical| iCalendar functionality]]&lt;br /&gt;
:''Using kcal to manage iCalendar files''&lt;br /&gt;
&lt;br /&gt;
== Other tutorials ==&lt;br /&gt;
&lt;br /&gt;
=== 2D Plotting (KPlotWidget) ===&lt;br /&gt;
;[[Development/Tutorials/KPlotWidget|Using the KDE data-plotting widget]]&lt;br /&gt;
:''This tutorial introduces KPlotWidget, which is used for 2-D data plotting.  It includes information on simple usage of the widget (including adding and modifying data sets, and customizing the plot axes and labels), and advanced customization (including extending the widget through sub-classing).''&lt;br /&gt;
&lt;br /&gt;
=== Spelling and Grammar Checking (Sonnet) ===&lt;br /&gt;
;[[Development/Tutorials/Sonnet/SonnetTutorial|Adding spell-checking or grammar-checking to KDE applications]]&lt;br /&gt;
:''This tutorial introduces Sonnet and how one may use it to add language correction to your KDE application. Sonnet's auxiliary features shall be described in a separate tutorial.''&lt;br /&gt;
&lt;br /&gt;
=== Pixmap cache (KPixmapCache) ===&lt;br /&gt;
;[[Development/Tutorials/KPixmapCache|Using the KDE pixmap cache]]&lt;br /&gt;
:''This tutorial shows how to use KPixmapCache to cache e.g. pixmaps generated from SVGs or some data.''&lt;br /&gt;
&lt;br /&gt;
=== Using MarbleWidget (Marble) ===&lt;br /&gt;
;[[Development/Tutorials/MarbleWidget|Using MarbleWidget]]&lt;br /&gt;
:''This short tutorial describes how to use the MarbleWidget in your project''&lt;br /&gt;
&lt;br /&gt;
=== Using local SCM for KDE development ===&lt;br /&gt;
;[[Development/Git|Using Git to develop for KDE]]&lt;br /&gt;
:''Here you find information on how to use Git to develop for KDE''&lt;br /&gt;
&lt;br /&gt;
=== Kwin effect tutorial (blog) ===&lt;br /&gt;
;[[http://blog.martin-graesslin.com/blog/?p=258| blog by Martin Graesslin]]&lt;br /&gt;
:''This tutorial guides you through the development of a simple KWin effect''&lt;br /&gt;
&lt;br /&gt;
=== Implementing KSysGuard sensors and adding them ===&lt;br /&gt;
;[[Development/Tutorials/Sensors]]&lt;br /&gt;
:''This tutorial shows how to write and KSysGuard sensor and connect it to the systray.''&lt;br /&gt;
Runners&lt;br /&gt;
== KDE2 and KDE3 Materials ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KDE3|KDE3 Tutorials]]&lt;br /&gt;
:''These tutorials cover topics related to KDE3.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KDE2|KDE2 Tutorials]]&lt;br /&gt;
:''These tutorials cover topics related to KDE2.''&lt;br /&gt;
&lt;br /&gt;
[[Category:KDE4]]&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials_(csb)</id>
		<title>Development/Tutorials (csb)</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials_(csb)"/>
				<updated>2011-04-28T20:17:10Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Development/Tutorials}}&lt;br /&gt;
&lt;br /&gt;
Tutoriale to nôlepsza stegna do tegò, żebë òdkrëc co KDE mòże zrobic dlô ce ë na jaczi ôrt. Tuwò môsz pòdóné przëstãpne ùczbòwniczi '''dlô KDE4'''. Materiałë dlô KDE3 a KDE2 pòdóné są na kùńcu starnë.&lt;br /&gt;
&lt;br /&gt;
== Wprowadzenié do programòwania KDE 4 ==&lt;br /&gt;
Jes të zajinteresowóny pisanim aplikacëjów z KDE 4? Na seria tutorialów sczérowónô je do tëch co jesz nie programòwalë dlô KDE.&lt;br /&gt;
;[[Development/Tutorials/First program|Witôj Swiece]]&lt;br /&gt;
:''Spòdlowé wprowadzenié do nôbarżi spòdlowëch spraw z pragramòwania KDE4''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using KXmlGuiWindow|Ùsôdzanié przédnégò òkna]]&lt;br /&gt;
:''Nen tutorial pòkaże ce to co w òknowim programòwaniu je nôwôżniészé: przédné òkno.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using KActions|Ùżëwanié KActions]]&lt;br /&gt;
:''Jak dodac akcëje do menu ë lëstwë nôrzãdzów.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Saving and loading|Zapisywanié ë ladowanié]]&lt;br /&gt;
:''Wprowadzenié do biblioteczi KIO ze zwëskanim wiédzë jak dodac wspiarcé dlô ladowania a zapisënkù do aplikacëji.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KCmdLineArgs|Argùmentë rézë pòlétów]]&lt;br /&gt;
:''Dodôj mòżlëwòtã òtmëkaniô dokùmentów bez swòją aplikacëjã zrëszaną z rézë pòlétów.''&lt;br /&gt;
&lt;br /&gt;
== Spòdlé ==&lt;br /&gt;
;[[Development/Tutorials/KDE4 Porting Guide|Porting Your Application]]&lt;br /&gt;
:''Help Porting Applications from Qt3/KDE3 to Qt4/KDE4''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/CMake|Introduction to CMake]]&lt;br /&gt;
:''How to use the CMake build system used by KDE4.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Common Programming Mistakes|Common Programming Mistakes]]&lt;br /&gt;
:''Various common mistakes made while developing Qt and KDE applications and how to avoid them.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using Qt Designer|Using Qt Designer to build user interfaces]]&lt;br /&gt;
:''How to create UI files with designer, and how to integrate them into a KDE program.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Creating Libraries|Creating Libraries to share code]]&lt;br /&gt;
:''How to add the library to the buildsystem and how to prepare the source code.''&lt;br /&gt;
&lt;br /&gt;
== Testowanié ë debbuging ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Debugging|Debugging your application]]&lt;br /&gt;
:''Tips, tools and techniques to apply when debugging your KDE application''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Unittests|Writing Unittests for Qt4 and KDE4 with QTestLib]] ([http://developer.kde.org/documentation/tutorials/writingunittests/writingunittests.html Original link])&lt;br /&gt;
:''Tutorial by [mailto:bradh@frogmouth.net Brad Hards] that describes how to write unit tests using the QTestLib framework. It is presented as an example based tutorial, and is still under development.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Code_Checking|Semi-automatic ways to detect code errors]]&lt;br /&gt;
:''Techniques you can use to detect errors in KDE code''&lt;br /&gt;
&lt;br /&gt;
== Managing Configuration Data With KConfig ==&lt;br /&gt;
;[[Development/Tutorials/KConfig|Introduction To KConfig]]&lt;br /&gt;
:''An overview of the KConfig classes and how to use them in your application code''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using KConfig XT|Using KConfig XT]]&lt;br /&gt;
:''Tutorial on how to efficiently use the KConfig XT framework.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Updating KConfig Files|Updating KConfig Files]]&lt;br /&gt;
:''Tutorial on how to write an update script to keep changes in your application's config file format in sync with the user's already existing config file''&lt;br /&gt;
&lt;br /&gt;
== Services: Applications and Plugins ==&lt;br /&gt;
;[[Development/Tutorials/Services/Introduction|Introduction to the Services Framework]]&lt;br /&gt;
:''An overview of the services framework in KDE and what it provides the application developer. Covers the system configuration cache (SyCoCa), the source data files and what the indexed information can be used for.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Services/Traders|Finding Services Using Trader Queries]]&lt;br /&gt;
:''How to find services, such as plugins or mimetypes, that are indexed in the SyCoCa using Trader Query Syntax''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Services/Plugins|Creating and Loading Plugins Using KService]]&lt;br /&gt;
:''Learn how to define custom plugin types, find installed plugins (including 3rd party plugins) and load them in an easy and portable fashion using KService.''&lt;br /&gt;
&lt;br /&gt;
== Localization ==&lt;br /&gt;
See also [[Localization|Localization portal]].&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Localization/Unicode|Introduction To Unicode]]&lt;br /&gt;
:''An introduction to what Unicode is as well as how to handle Unicode data in KDE applications.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n|Writing Applications With Localization In Mind]]&lt;br /&gt;
:''This tutorial covers what localization is, why it's important and how to ensure your application is ready to be localized. A must read for all application developers.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Mistakes|Avoiding Common Localization Pitfalls]]&lt;br /&gt;
:''There are several common mistakes that prevent applications from being properly localized. Find out what they are and how to easily avoid them in this tutorial.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/Building KDE's l10n Module|Building KDE's Localization Module]]&lt;br /&gt;
:''Building and installing language support from KDE's localization (l10n) module is a good idea for those working on applications in the main KDE repository. Doing so will allow you to test your application in another language and spot problem areas. Learn how to do just that in this tutorial.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Build Systems|Incorporating i18n Into the Build System]]&lt;br /&gt;
:''Once your application is ready to be localized, the next step is to ensure that translation files are built automatically and kept up to date. This tutorial covers the necessary CMakeFiles.txt additions as well the process of distributing the resulting message catalogs with your application.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Challenges|Common i18n Challenges and Solutions]]&lt;br /&gt;
:''This tutorial covers challenges that you may eventually run into such as translating handbooks and other data that exists outside of the source code, merging and handling obsolete .po files, dealing with freezes, coding in languages other than English and creating independent releases of or moving applications between KDE modules.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n_Semantics|Semantic Markup of Messages]]&lt;br /&gt;
:''To ensure consistent presentation and more meaningful representations of messages in applications, semantic markup can be applied to messages marked for translation using the KUIT system. This tutorial describes how this system works.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Krazy|Automated i18n Code Checking]]&lt;br /&gt;
:''The Krazy code checker scans KDE's code and reports common i18n mistakes.''&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/API_Documentation|API Documentation]]&lt;br /&gt;
:''This tutorial explains how to document your APIs properly.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Man_Pages|Man Pages]]&lt;br /&gt;
:''Writing and Generating Reference Manual Pages.''&lt;br /&gt;
&lt;br /&gt;
== Application Automation and Scripting ==&lt;br /&gt;
&lt;br /&gt;
=== D-Bus ===&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Introduction|Introduction to D-Bus]]&lt;br /&gt;
:''A straight-forward introduction to the core concepts in D-Bus from an application developer's perspective, this tutorial covers what D-Bus is and how it can be used by applications.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Accessing Interfaces|Accessing D-Bus Interfaces]]&lt;br /&gt;
:''A step-by-step guide to calling D-Bus methods and connecting to D-Bus signals using QtDBus.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Intermediate_D-Bus|Intermediate D-Bus]]&lt;br /&gt;
:''Tips to make use of QtDBus when faced with problematic real-world interfaces.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Creating Interfaces|Creating D-Bus Interfaces]]&lt;br /&gt;
:''Learn how to expose functionality in your application by creating and using custom D-Bus interfaces. Covers generating the XML descriptions, instantiating interfaces at run time and setting up the build system with CMake.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Autostart Services|D-Bus Autostart Services]]&lt;br /&gt;
:''Turn your application into a D-Bus autostart service with this tutorial. This D-Bus feature, also known as &amp;quot;D-Bus service activation&amp;quot;, will ensure that even when your application isn't running that D-Bus calls made to it will work by relying on the D-Bus daemon itself to start your app if and when needed.''&lt;br /&gt;
; [[Development/Tutorials/Porting_to_D-Bus|Porting from DCOP to D-Bus]]&lt;br /&gt;
: ''Port your applications from DCOP to D-Bus with this handy guide.''&lt;br /&gt;
&lt;br /&gt;
=== Konqueror ===&lt;br /&gt;
; [[Development/Tutorials/Creating Konqueror Service Menus|Creating Konqueror Service Menus]]&lt;br /&gt;
:''This tutorial shows you how to create mimetype-specific actions in Konqueror's context menu (aka &amp;quot;servicemenus&amp;quot;).''&lt;br /&gt;
&lt;br /&gt;
=== Kross ===&lt;br /&gt;
; [[Development/Tutorials/Kross/Introduction|Introduction to Kross]]&lt;br /&gt;
:''An introduction to the Kross Scripting Framework.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Hello_World|Hello World]]&lt;br /&gt;
:''A first application with working kross code.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Call_Functions_in_Kross|Calling Functions in Kross]]&lt;br /&gt;
:''Simple demonstration of calling scripting functions''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Connecting_Signals_and_slots_in_Kross|Connecting Signals and Slots in Kross]]&lt;br /&gt;
:''Simple demonstration of connecting object signals with script slots''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Scripts-as-Plugins|Scripts as Plugins with Kross]]&lt;br /&gt;
:''This tutorial provides a step-by-step introduction how to integrate scripts as plugins into a KDE application.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Scripts-as-KPlugins|Load Kross Scripts as KPlugins]]&lt;br /&gt;
:''This tutorial provides a step-by-step introduction how to load scripts as KPlugins.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Script-Actions|Placing script actions in your application menus ]]&lt;br /&gt;
:''Simple demonstration on how to extend you application menus to execute script files.''&lt;br /&gt;
&lt;br /&gt;
=== KOffice ===&lt;br /&gt;
; [[Development/Tutorials/KOffice Overview|KOffice Overview]]&lt;br /&gt;
:''This document shows an overview of the different KOffice plugin types and tells you what each of their purpose and strengths are.''  If you are new with KOffice plugins, this is the place to start.&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Write a Flake Plugin|Creating KOffice Flake Plugins]]&lt;br /&gt;
:''This tutorial shows you how you can build a plugin for KOffice applications to allow you embed content in ODF documents using Flake.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/KWord Scripting|KWord Scripting]]&lt;br /&gt;
:''This tutorial shows how to script KWord with Python, Ruby or JavaScript using Kross.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/KSpread Scripting|KSpread Scripting]]&lt;br /&gt;
:''This tutorial shows how to script KSpread with Python, Ruby or JavaScript using Kross.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Krita Scripting|Krita Scripting]]&lt;br /&gt;
:''This tutorial shows how to script Krita with Python, Ruby or JavaScript using Kross.''&lt;br /&gt;
&lt;br /&gt;
=== SuperKaramba ===&lt;br /&gt;
; [[Development/Tutorials/SuperKaramba|SuperKaramba Tutorial]]&lt;br /&gt;
:''This tutorial provides an overview of SuperKaramba, theme files and scripting with Python, Ruby and JavaScript.''&lt;br /&gt;
&lt;br /&gt;
== Plugins and KParts ==&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Writing kontact plugins|Writing kontact plugins]]:''Kontact plugins are KParts. This tutorial describes how you can write one.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Using KParts|Using KParts]]:''Learn how to load a KPart into an application window.''&lt;br /&gt;
&lt;br /&gt;
== Search and Metadata ==&lt;br /&gt;
&lt;br /&gt;
=== Strigi ===&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Writing file analyzers|Writing file analyzers]]&lt;br /&gt;
:''File analyzers extract data from files to display in the file dialogs and file managers. The data gathered this way is also used to search for files. KDE4 allows the use of multiple analyzers per file type. This tutorial describes how you can write new analyzers.''&lt;br /&gt;
&lt;br /&gt;
=== [http://nepomuk.kde.org Nepomuk] ===&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/Quickstart|Nepomuk Quickstart]]&lt;br /&gt;
:''How to use Nepomuk resources in a quick and painless way without much fuss.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/RDFIntroduction|RDF and Ontologies in Nepomuk]]&lt;br /&gt;
:''An introduction to RDF and the usage of ontologies in Nepomuk.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/Resources|Handling Resources with Nepomuk]]&lt;br /&gt;
:''Nepomuk is the KDE library which provides easy access to metadata in the Nepomuk system. Learn how to make your application create and read metadata using the Nepomuk system.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/ResourceGenerator|Using the Nepomuk Resource Generator]]&lt;br /&gt;
:''Nepomuk includes a resource generator which creates convenience classes for handling metadata.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/AdvancedQueries|Advanced Queries]]&lt;br /&gt;
:''The real power of Nepomuk can only be exposed when performing fancy queries on the data repository. This tutorial provides an introduction to semantic and full text queries in Nepomuk.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/NepomukServer|The Nepomuk Server and the Architecture of the Nepomuk subsystem]]&lt;br /&gt;
:''The Nepomuk Server hosts the main Nepomuk data repository and can be accessed directly via a Soprano API.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/NepomukServices|Nepomuk Services]]&lt;br /&gt;
:''The Nepomuk Server manages a set of Nepomuk services.''&lt;br /&gt;
:* [[Development/Tutorials/Metadata/Nepomuk/StorageService|Storage Service]] ''The probably most important service hosts the Nepomuk data repository using [http://soprano.sourceforge.net Soprano].''&lt;br /&gt;
:* [[Development/Tutorials/Metadata/Nepomuk/OntologyLoaderService|Ontology Loader]] ''Makes sure installed ontologies such as RDF, RDFS, NRL, or Xesam are loaded into the storage repository.''&lt;br /&gt;
:* [[Development/Tutorials/Metadata/Nepomuk/FileWatchService|File Watch Service]] ''Monitors the file system for changes and updates the file resource paths and URIs in Nepomuk.''&lt;br /&gt;
:* [[Development/Tutorials/Metadata/Nepomuk/StrigiService|Strigi Service]] ''Controls Strigi, the file indexing tool which extracts metadata from files and stores it into the storage repository.''&lt;br /&gt;
:* [[Development/Tutorials/Metadata/Nepomuk/QueryService|Query Service]] ''Provides persistant query folders.''&lt;br /&gt;
&lt;br /&gt;
== Hardware Awareness (Solid) ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Solid_Tutorials|Introduction to Solid]]&lt;br /&gt;
:''An introduction to using the Solid hardware discovery and interaction system in KDE applications.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Solid_Network_Tutorial|Accessing Network Information]]&lt;br /&gt;
:''How to use the Solid system to get information about the network''&lt;br /&gt;
&lt;br /&gt;
== Multimedia (Phonon) ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Phonon/Introduction|Phonon]]&lt;br /&gt;
:''How to start with the multimedia API''&lt;br /&gt;
&lt;br /&gt;
:''How to compile and use Phonon and its GStreamer backend on Linux using Qt 4.3.x''&lt;br /&gt;
::''This article gives you a quick brief of how you can use checkout, compile Phonon and its GStreamer backend on GNU/Linux with just Qt 4.3.x. Towards the end, the article also describes how a developer can make use of Phonon to create simple audio and video players. You can read the article [http://www.vcreatelogic.com/oss/docs/CompilingPhononOnLinux.pdf here]. You can download the editable OpenDocumentText file from [http://www.prashanthudupa.com/phonon/CompilingPhononOnLinux.odt here].''&lt;br /&gt;
&lt;br /&gt;
== Plasma ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Plasma/GettingStarted|Getting Started With Plasmoids]]&lt;br /&gt;
:''Creating your first Plasma widget, or Plasmoid, in C++ with an SVG background, an icon and some text''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Plasma/DataEngines|Writing A DataEngine]]&lt;br /&gt;
:''DataEngines provide a [http://api.kde.org/4.0-api/kdebase-apidocs/workspace/libs/plasma/html/classPlasma_1_1DataEngine.html  standardized interface] to various data sources for visualizations to use. Learn what a DataEngine is and how to write one of your own.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Plasma/UsingDataEngines|Using DataEngines in Plasmoids]]&lt;br /&gt;
:''With a DataEngine, it is possible to retrieve data for display in a simple and standard way. This tutorial covers the topic of how to use DataEngines for this purpose in Plasmoids.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Plasma/AbstractRunner|Creating Runners]]&lt;br /&gt;
:''Runners are plugins that provide action-based search functionality in the Plasma workspace &amp;quot;run command&amp;quot; dialog. These plugins can be used by any application that links again libplasma.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Plasma/Theme|Creating a Plasma Theme]]&lt;br /&gt;
:''Guide to creating your first Plasma theme.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Plasma/UsingExtenders|Using Extenders]]&lt;br /&gt;
:''This guide shows you how to create a simple applet (a stripped down kuiserver applet) that uses extenders.''&lt;br /&gt;
&lt;br /&gt;
== Communication (Decibel) ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Decibel/GettingStarted|Getting started with Decibel]]&lt;br /&gt;
:''This tutorial describes how to set up Decibel.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Decibel/Handling_TextChannels|Handling TextChannels]]&lt;br /&gt;
:''This tutorial introduces the basics of handling incoming TextChannels by guiding you through building a simple text chat application.''&lt;br /&gt;
&lt;br /&gt;
== Personal Information Management (Akonadi) ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Akonadi/Resources|Developing Akonadi Resources]]&lt;br /&gt;
:''Akonadi Resources are agent programs which transport PIM data between Akonadi and a backend (files, servers, etc)''&lt;br /&gt;
&lt;br /&gt;
== Kate / Kwrite ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Kate/KTextEditor Plugins|Getting started with KTextEditor plugins]]&lt;br /&gt;
:''Creating your first KTextEditor plugin''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Kate/KTextEditor_Plugins_Advanced|Developing a plugin with configuration dialog]]&lt;br /&gt;
:''Adding a configuration dialog to the Time &amp;amp; Date example''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Kate/KTextEditor_Example|A small Editor]]&lt;br /&gt;
:''Create a small application using KTextEditor''&lt;br /&gt;
&lt;br /&gt;
==Printing==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Printing Hello World|Hello World]]&lt;br /&gt;
:''Introduction to the KDE printing system''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Printing Print Dialog|Print Dialog]]&lt;br /&gt;
:''Using the KDE print dialog''&lt;br /&gt;
&lt;br /&gt;
== kioslaves ==&lt;br /&gt;
* [[Development/Tutorials/KIO Slaves/Using KIO Slaves in your Program|Using kioslaves in your Program]]&lt;br /&gt;
* [[Development/Tutorials/KIO Slaves/Hello World|Creating a Hello-World kioslave]]&lt;br /&gt;
&lt;br /&gt;
== Get Hot New Stuff ==&lt;br /&gt;
; [[Development/Tutorials/K_Hot_New_Stuff2|New introduction to Get Hot New Stuff 2]]&lt;br /&gt;
:''A short tutorial about how to use KHotNewStuff2 in your application.''&lt;br /&gt;
&lt;br /&gt;
* old links for KNS1 content:&lt;br /&gt;
; [[Development/Tutorials/Introduction to Get Hot New Stuff|Introduction to Get Hot New Stuff]]&lt;br /&gt;
:''An introduction to the developer-friendly network update system that allows KDE applications to fetch new application data at runtime in a user friendly manner.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KNewStuffSecure|KNewStuff Secure]] ([http://developer.kde.org/documentation/tutorials/knewstuffsecure/index.html Original Link])&lt;br /&gt;
:''Tutorial showing how to share resources in a secured way (KDE 3.4 and later).''  By Andr&amp;amp;#225;s Mantia &amp;amp;lt;amantia@kde.org&amp;amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Goya ==&lt;br /&gt;
; [[Development/Tutorials/Introduction to Goya usage|Introduction to Goya usage]]&lt;br /&gt;
:''An introduction for the Goya subsystem usage, which allows you to easily add widgets to your itemviews and connect their signals to your code, as they were real widgets.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Introduction to Goya usage 2|Introduction to Goya usage (part 2)]]&lt;br /&gt;
:''The second part of the tutorial, with a slightly more complex example than the first part.''&lt;br /&gt;
&lt;br /&gt;
== Other programming languages ==&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Python introduction to signals and slots|101 Introduction to signals and slots]]&lt;br /&gt;
:''A simple introduction to Qt's signal and slot architecture.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Languages/Python/PyKDE_WebKit_Tutorial|PyKDE WebKit Tutorial]]&lt;br /&gt;
:''A simple web browser application in PyKDE''&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
;[http://developer.kde.org/language-bindings/ruby/kde3tutorial/index.html KDE Ruby Korundum tutorial]&lt;br /&gt;
:''A ruby version of Antonio Larrosa Jim&amp;amp;eacute;nez's KDE tutorial by Richard Dale. See the [http://developer.kde.org/language-bindings/ruby/index.html Ruby Developers Corner] for Qt tutorials and other info.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Qt4_Ruby_Tutorial|Qt4 Ruby Tutorial]]&lt;br /&gt;
:''Trolltech's fabulous introductory tutorial to Qt, translated to Ruby.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Plasma/RubyApplet|Creating a Plasma Widget in Ruby]]&lt;br /&gt;
:''Tutorial that shows how to create your first Plasma Applet using the Ruby language.''&lt;br /&gt;
&lt;br /&gt;
=== Shell ===&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Shell_Scripting_with_KDE_Dialogs|Shell Scripting with KDE dialogs]] ([http://developer.kde.org/documentation/tutorials/kdialog/t1.html Original Link]) &lt;br /&gt;
:''Tutorial by [mailto:bradh@frogmouth.net Brad Hards] that describes how to use KDE dialogs in shell scripts with kdialog. It is presented as an example based tutorial.''&lt;br /&gt;
&lt;br /&gt;
== Graphics Programming ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Graphics/Performance|QPainter Perfomance]]&lt;br /&gt;
:''Hints on avoiding common mistakes leading to poor performance when using QPainter''&lt;br /&gt;
&lt;br /&gt;
== Using the KDE Games Libraries ==&lt;br /&gt;
;[[Development/Tutorials/Games/KStandardGameAction| KStandardGameAction]]&lt;br /&gt;
:''Using libkdegames to make your game fit the kdegames standard''&lt;br /&gt;
;[[Development/Tutorials/Games/Highscores| Highscores]]&lt;br /&gt;
:''Implementing a simple highscore table into your game''&lt;br /&gt;
;[[Development/Tutorials/Games/Theme Selector| Theme Selector]]&lt;br /&gt;
:''Using the libkdegames theme selection dialog''&lt;br /&gt;
;[[Development/Tutorials/Games/Palapeli Patterns| Palapeli Patterns]]&lt;br /&gt;
:''Creating a pattern for Palapeli''&lt;br /&gt;
;[[Development/Tutorials/Games/KGLEngine2d| KGLEngine2d]]&lt;br /&gt;
:''Using KGLEngine2d for 2D games development''&lt;br /&gt;
&lt;br /&gt;
== Using the KDE PIM Libraries ==&lt;br /&gt;
;[[Development/Tutorials/PIM/ical| iCalendar functionality]]&lt;br /&gt;
:''Using kcal to manage iCalendar files''&lt;br /&gt;
&lt;br /&gt;
== Other tutorials ==&lt;br /&gt;
&lt;br /&gt;
=== 2D Plotting (KPlotWidget) ===&lt;br /&gt;
;[[Development/Tutorials/KPlotWidget|Using the KDE data-plotting widget]]&lt;br /&gt;
:''This tutorial introduces KPlotWidget, which is used for 2-D data plotting.  It includes information on simple usage of the widget (including adding and modifying data sets, and customizing the plot axes and labels), and advanced customization (including extending the widget through sub-classing).''&lt;br /&gt;
&lt;br /&gt;
=== Spelling and Grammar Checking (Sonnet) ===&lt;br /&gt;
;[[Development/Tutorials/Sonnet/SonnetTutorial|Adding spell-checking or grammar-checking to KDE applications]]&lt;br /&gt;
:''This tutorial introduces Sonnet and how one may use it to add language correction to your KDE application. Sonnet's auxiliary features shall be described in a separate tutorial.''&lt;br /&gt;
&lt;br /&gt;
=== Pixmap cache (KPixmapCache) ===&lt;br /&gt;
;[[Development/Tutorials/KPixmapCache|Using the KDE pixmap cache]]&lt;br /&gt;
:''This tutorial shows how to use KPixmapCache to cache e.g. pixmaps generated from SVGs or some data.''&lt;br /&gt;
&lt;br /&gt;
=== Using MarbleWidget (Marble) ===&lt;br /&gt;
;[[Development/Tutorials/MarbleWidget|Using MarbleWidget]]&lt;br /&gt;
:''This short tutorial describes how to use the MarbleWidget in your project''&lt;br /&gt;
&lt;br /&gt;
=== Using local SCM for KDE development ===&lt;br /&gt;
;[[Development/Git|Using Git to develop for KDE]]&lt;br /&gt;
:''Here you find information on how to use Git to develop for KDE''&lt;br /&gt;
&lt;br /&gt;
=== Implementing KSysGuard sensors and adding them ===&lt;br /&gt;
;[[Development/Tutorials/Sensors]]&lt;br /&gt;
:''This tutorial shows how to write and KSysGuard sensor and connect it to the systray.''&lt;br /&gt;
&lt;br /&gt;
== KDE2 and KDE3 Materials ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KDE3|KDE3 Tutorials]]&lt;br /&gt;
:''These tutorials cover topics related to KDE3.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KDE2|KDE2 Tutorials]]&lt;br /&gt;
:''These tutorials cover topics related to KDE2.''&lt;br /&gt;
&lt;br /&gt;
[[Category:KDE4]]&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials_(ta)</id>
		<title>Development/Tutorials (ta)</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials_(ta)"/>
				<updated>2011-04-28T20:16:34Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Development/Tutorials}}&lt;br /&gt;
&lt;br /&gt;
கேடியியினைக் கொண்டு என்ன செய்ய இயலும் என்பதையும் எவ்வாறு செய்ய வேண்டும் என்பதையும் அறிய எளிய வழி பயிற்சிப் பாடங்கள். கே பணிச் சூழல் 4 க்கு தற்போதைக்கு கிடைக்கக் கூடிய பயிற்சிப்பாடங்களின் பட்டியல் கீழே கொடுக்கப் பட்டுள்ளன. கேடியி3 மற்றும் கேடியி2 க்கான பாடங்கள் பக்கத்தின் அடிப் பகுதியில் தரப்பட்டுள்ளன.&lt;br /&gt;
&lt;br /&gt;
== கே ப சூழல் 4 நிரலாக்கத்திற்கான அறிமுகம் ==&lt;br /&gt;
&lt;br /&gt;
கேபசூ 4 உடன் பொருந்தக் கூடிய பயன்பாடுகளை இயற்ற தாங்கள் விரும்புகிறீர்களா? கே ப சூ நிரலாக்கத்திற்கு முற்றிலும் புதிய ஒருவரை இப் பயிற்சிப்பாடங்கள் இலக்காக கொண்டுள்ளன.&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/First program|Hello World]]&lt;br /&gt;
:''கேபசூ 4 நிரலாக்கத்தின் ஆரம்பப் பாடம்''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using KXmlGuiWindow|Creating the Main Window]]&lt;br /&gt;
:''பயன்பாட்டின் மிக முக்கிய விடயமான பிரதான சாளரத்தின் ஜாலத்தினை இப்பயிற்சி பாடம் விளக்குகிறது.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using KActions|Using KActions]]&lt;br /&gt;
:''மெனுக்களுக்கும் கருவிப்பட்டிகளுக்கும் எவ்வாறு செயற்களை சேர்ப்பது?''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Saving and loading|Saving and Loading]]&lt;br /&gt;
:''நமது பயன்பாட்டிற்கான ஆதரவினை ஏற்றுகையிலும் காக்கையிலும் KIO நிரலகத்தினை அறிமுகப் படுத்துகிறது.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KCmdLineArgs|Command line arguments]]&lt;br /&gt;
:''நமது உரை திருத்திக்கு முனையத்திலிருந்து எந்த கோப்பினை திறக்க வேண்டும் எனக் குறிப்பிடும் ஆற்றலைச் சேர்க்கிறது.''&lt;br /&gt;
&lt;br /&gt;
== அடிப்படைகள் ==&lt;br /&gt;
;[[Development/Tutorials/KDE4 Porting Guide|Porting Your Application]]&lt;br /&gt;
:''Qt3/KDE3 லிருந்து Qt4/KDE4 க்கு பயன்பாடுகளை பெயர்ப்பதற்காக உதவவும்''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/CMake|Introduction to CMake]]&lt;br /&gt;
:''KDE4 பயன்படுத்தும் CMake build system தனை பயன்படுத்துவது எப்படி''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Common Programming Mistakes|Common Programming Mistakes]]&lt;br /&gt;
:''Qt, KDE பயன்பாடுகளை உருவாக்குகையில் ஏற்படும் பொதுவான பிழைகளும் அவற்றை தவிர்ப்பதற்கான வழிகளும்.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using Qt Designer|Using Qt Designer to build user interfaces]]&lt;br /&gt;
:''How to create UI files with designer, and how to integrate them into a KDE program.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Creating Libraries|Creating Libraries to share code]]&lt;br /&gt;
:''How to add the library to the buildsystem and how to prepare the source code.''&lt;br /&gt;
&lt;br /&gt;
== Testing And Debugging ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Debugging|Debugging your application]]&lt;br /&gt;
:''Tips, tools and techniques to apply when debugging your KDE application''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Unittests|Writing Unittests for Qt4 and KDE4 with QTestLib]] ([http://developer.kde.org/documentation/tutorials/writingunittests/writingunittests.html Original link])&lt;br /&gt;
:''Tutorial by [mailto:bradh@frogmouth.net Brad Hards] that describes how to write unit tests using the QTestLib framework. It is presented as an example based tutorial, and is still under development.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Code_Checking|Semi-automatic ways to detect code errors]]&lt;br /&gt;
:''Techniques you can use to detect errors in KDE code''&lt;br /&gt;
&lt;br /&gt;
== Managing Configuration Data With KConfig ==&lt;br /&gt;
;[[Development/Tutorials/KConfig|Introduction To KConfig]]&lt;br /&gt;
:''An overview of the KConfig classes and how to use them in your application code''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using KConfig XT|Using KConfig XT]]&lt;br /&gt;
:''Tutorial on how to efficiently use the KConfig XT framework.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Updating KConfig Files|Updating KConfig Files]]&lt;br /&gt;
:''Tutorial on how to write an update script to keep changes in your application's config file format in sync with the user's already existing config file''&lt;br /&gt;
&lt;br /&gt;
== Services: Applications and Plugins ==&lt;br /&gt;
;[[Development/Tutorials/Services/Introduction|Introduction to the Services Framework]]&lt;br /&gt;
:''An overview of the services framework in KDE and what it provides the application developer. Covers the system configuration cache (SyCoCa), the source data files and what the indexed information can be used for.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Services/Traders|Finding Services Using Trader Queries]]&lt;br /&gt;
:''How to find services, such as plugins or mimetypes, that are indexed in the SyCoCa using Trader Query Syntax''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Services/Plugins|Creating and Loading Plugins Using KService]]&lt;br /&gt;
:''Learn how to define custom plugin types, find installed plugins (including 3rd party plugins) and load them in an easy and portable fashion using KService.''&lt;br /&gt;
&lt;br /&gt;
== Localization ==&lt;br /&gt;
;[[Development/Tutorials/Localization/Unicode|Introduction To Unicode]]&lt;br /&gt;
:''An introduction to what Unicode is as well as how to handle Unicode data in KDE applications.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n|Writing Applications With Localization In Mind]]&lt;br /&gt;
:''This tutorial covers what localization is, why it's important and how to ensure your application is ready to be localized. A must read for all application developers.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Mistakes|Avoiding Common Localization Pitfalls]]&lt;br /&gt;
:''There are several common mistakes that prevent applications from being properly localized. Find out what they are and how to easily avoid them in this tutorial.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/Building KDE's l10n Module|Building KDE's Localization Module]]&lt;br /&gt;
:''Building and installing language support from KDE's localization (l10n) module is a good idea for those working on applications in the main KDE repository. Doing so will allow you to test your application in another language and spot problem areas. Learn how to do just that in this tutorial.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Build Systems|Incorporating i18n Into the Build System]]&lt;br /&gt;
:''Once your application is ready to be localized, the next step is to ensure that translation files are built automatically and kept up to date. This tutorial covers the necessary CMakeFiles.txt additions as well the process of distributing the resulting message catalogs with your application.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Challenges|Common i18n Challenges and Solutions]]&lt;br /&gt;
:''This tutorial covers challenges that you may eventually run into such as translating handbooks and other data that exists outside of the source code, merging and handling obsolete .po files, dealing with freezes, coding in languages other than English and creating independent releases of or moving applications between KDE modules.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n_Semantics|Semantic Markup of Messages]]&lt;br /&gt;
:''To ensure consistent presentation and more meaningful representations of messages in applications, semantic markup can be applied to messages marked for translation using the KUIT system. This tutorial describes how this system works.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Krazy|Automated i18n Code Checking]]&lt;br /&gt;
:''The Krazy code checker scans KDE's code and reports common i18n mistakes.''&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/API_Documentation|API Documentation]]&lt;br /&gt;
:''This tutorial explains how to document your APIs properly.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Man_Pages|Man Pages]]&lt;br /&gt;
:''Writing and Generating Reference Manual Pages.''&lt;br /&gt;
&lt;br /&gt;
== Application Automation and Scripting ==&lt;br /&gt;
&lt;br /&gt;
=== D-Bus ===&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Introduction|Introduction to D-Bus]]&lt;br /&gt;
:''A straight-forward introduction to the core concepts in D-Bus from an application developer's perspective, this tutorial covers what D-Bus is and how it can be used by applications.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Accessing Interfaces|Accessing D-Bus Interfaces]]&lt;br /&gt;
:''A step-by-step guide to calling D-Bus methods and connecting to D-Bus signals using QtDBus.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Intermediate_D-Bus|Intermediate D-Bus]]&lt;br /&gt;
:''Tips to make use of QtDBus when faced with problematic real-world interfaces.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Creating Interfaces|Creating D-Bus Interfaces]]&lt;br /&gt;
:''Learn how to expose functionality in your application by creating and using custom D-Bus interfaces. Covers generating the XML descriptions, instantiating interfaces at run time and setting up the build system with CMake.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Autostart Services|D-Bus Autostart Services]]&lt;br /&gt;
:''Turn your application into a D-Bus autostart service with this tutorial. This D-Bus feature, also known as &amp;quot;D-Bus service activation&amp;quot;, will ensure that even when your application isn't running that D-Bus calls made to it will work by relying on the D-Bus daemon itself to start your app if and when needed.''&lt;br /&gt;
; [[Development/Tutorials/Porting_to_D-Bus|Porting from DCOP to D-Bus]]&lt;br /&gt;
: ''Port your applications from DCOP to D-Bus with this handy guide.''&lt;br /&gt;
&lt;br /&gt;
=== Konqueror ===&lt;br /&gt;
; [[Development/Tutorials/Creating Konqueror Service Menus|Creating Konqueror Service Menus]]&lt;br /&gt;
:''This tutorial shows you how to create mimetype-specific actions in Konqueror's context menu (aka &amp;quot;servicemenus&amp;quot;).''&lt;br /&gt;
&lt;br /&gt;
=== Kross ===&lt;br /&gt;
; [[Development/Tutorials/Kross/Introduction|Introduction to Kross]]&lt;br /&gt;
:''An introduction to the Kross Scripting Framework.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Hello_World|Hello World]]&lt;br /&gt;
:''A first application with working kross code.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Call_Functions_in_Kross|Calling Functions in Kross]]&lt;br /&gt;
:''Simple demonstration of calling scripting functions''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Connecting_Signals_and_slots_in_Kross|Connecting Signals and Slots in Kross]]&lt;br /&gt;
:''Simple demonstration of connecting object signals with script slots''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Scripts-as-Plugins|Scripts as Plugins with Kross]]&lt;br /&gt;
:''This tutorial provides a step-by-step introduction how to integrate scripts as plugins into a KDE application.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Script-Actions|Placing script actions in your application menus ]]&lt;br /&gt;
:''Simple demonstration on how to extend you application menus to execute script files.''&lt;br /&gt;
&lt;br /&gt;
=== KOffice ===&lt;br /&gt;
; [[Development/Tutorials/KOffice Overview|KOffice Overview]]&lt;br /&gt;
:''This document shows an overview of the different KOffice plugin types and tells you what each of their purpose and strengths are.''  If you are new with KOffice plugins, this is the place to start.&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Write a Flake Plugin|Creating KOffice Flake Plugins]]&lt;br /&gt;
:''This tutorial shows you how you can build a plugin for KOffice applications to allow you embed content in ODF documents using Flake.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/KWord Scripting|KWord Scripting]]&lt;br /&gt;
:''This tutorial shows how to script KWord with Python, Ruby or JavaScript using Kross.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/KSpread Scripting|KSpread Scripting]]&lt;br /&gt;
:''This tutorial shows how to script KSpread with Python, Ruby or JavaScript using Kross.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Krita Scripting|Krita Scripting]]&lt;br /&gt;
:''This tutorial shows how to script Krita with Python, Ruby or JavaScript using Kross.''&lt;br /&gt;
&lt;br /&gt;
=== SuperKaramba ===&lt;br /&gt;
; [[Development/Tutorials/SuperKaramba|SuperKaramba Tutorial]]&lt;br /&gt;
:''This tutorial provides an overview of SuperKaramba, theme files and scripting with Python, Ruby and JavaScript.''&lt;br /&gt;
&lt;br /&gt;
== Plugins and KParts ==&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Writing kontact plugins|Writing kontact plugins]]:''Kontact plugins are KParts. This tutorial describes how you can write one.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Using KParts|Using KParts]]:''Learn how to load a KPart into an application window.''&lt;br /&gt;
&lt;br /&gt;
== Search and Metadata ==&lt;br /&gt;
&lt;br /&gt;
=== Strigi ===&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Writing file analyzers|Writing file analyzers]]&lt;br /&gt;
:''File analyzers extract data from files to display in the file dialogs and file managers. The data gathered this way is also used to search for files. KDE4 allows the use of multiple analyzers per file type. This tutorial describes how you can write new analyzers.''&lt;br /&gt;
&lt;br /&gt;
=== [http://nepomuk.kde.org Nepomuk] ===&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/Quickstart|Nepomuk Quickstart]]&lt;br /&gt;
:''How to use Nepomuk resources in a quick and painless way without much fuss.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/RDFIntroduction|RDF and Ontologies in Nepomuk]]&lt;br /&gt;
:''An introduction to RDF and the usage of ontologies in Nepomuk.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/Resources|Handling Resources with Nepomuk]]&lt;br /&gt;
:''Nepomuk is the KDE library which provides easy access to metadata in the Nepomuk system. Learn how to make your application create and read metadata using the Nepomuk system.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/ResourceGenerator|Using the Nepomuk Resource Generator]]&lt;br /&gt;
:''Nepomuk includes a resource generator which creates convenience classes for handling metadata.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/NepomukServer|The Nepomuk Server]]&lt;br /&gt;
:''The Nepomuk Server hosts the main Nepomuk data repository and can be accessed directly via a Soprano API.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/NepomukServices|Nepomuk Services]]&lt;br /&gt;
:''The Nepomuk Server manages a set of Nepomuk services.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/AdvancedQueries|Advanced Queries]]&lt;br /&gt;
:''The real power of Nepomuk can only be exposed when performing fancy queries on the data repository. This tutorial provides an introduction to semantic and full text queries in Nepomuk.''&lt;br /&gt;
&lt;br /&gt;
== Hardware Awareness (Solid) ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Solid_Tutorials|Introduction to Solid]]&lt;br /&gt;
:''An introduction to using the Solid hardware discovery and interaction system in KDE applications.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Solid_Network_Tutorial|Accessing Network Information]]&lt;br /&gt;
:''How to use the Solid system to get information about the network''&lt;br /&gt;
&lt;br /&gt;
== Multimedia (Phonon) ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Phonon/Introduction|Phonon]]&lt;br /&gt;
:''How to start with the multimedia API''&lt;br /&gt;
&lt;br /&gt;
:''How to compile and use Phonon and its GStreamer backend on Linux using Qt 4.3.x''&lt;br /&gt;
::''This article gives you a quick brief of how you can use checkout, compile Phonon and its GStreamer backend on GNU/Linux with just Qt 4.3.x. Towards the end, the article also describes how a developer can make use of Phonon to create simple audio and video players. You can read the article [http://www.vcreatelogic.com/oss/docs/CompilingPhononOnLinux.pdf here]. You can download the editable OpenDocumentText file from [http://www.prashanthudupa.com/phonon/CompilingPhononOnLinux.odt here].''&lt;br /&gt;
&lt;br /&gt;
== Plasma ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Plasma/GettingStarted|Getting Started With Plasmoids]]&lt;br /&gt;
:''Creating your first Plasma widget, or Plasmoid, in C++ with an SVG background, an icon and some text''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Plasma/DataEngines|Writing A DataEngine]]&lt;br /&gt;
:''DataEngines provide a [http://api.kde.org/4.0-api/kdebase-apidocs/workspace/libs/plasma/html/classPlasma_1_1DataEngine.html  standardized interface] to various data sources for visualizations to use. Learn what a DataEngine is and how to write one of your own.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Plasma/UsingDataEngines|Using DataEngines in Plasmoids]]&lt;br /&gt;
:''With a DataEngine, it is possible to retrieve data for display in a simple and standard way. This tutorial covers the topic of how to use DataEngines for this purpose in Plasmoids.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Plasma/AbstractRunner|Creating Runners]]&lt;br /&gt;
:''Runners are plugins that provide action-based search functionality in the Plasma workspace &amp;quot;run command&amp;quot; dialog. These plugins can be used by any application that links again libplasma.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Plasma/Theme|Creating a Plasma Theme]]&lt;br /&gt;
:''Guide to creating your first Plasma theme.''&lt;br /&gt;
&lt;br /&gt;
== Communication (Decibel) ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Decibel/GettingStarted|Getting started with Decibel]]&lt;br /&gt;
:''This tutorial describes how to set up Decibel.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Decibel/Handling_TextChannels|Handling TextChannels]]&lt;br /&gt;
:''This tutorial introduces the basics of handling incoming TextChannels by guiding you through building a simple text chat application.''&lt;br /&gt;
&lt;br /&gt;
== Kate / Kwrite ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Kate/KTextEditor Plugins|Getting started with KTextEditor plugins]]&lt;br /&gt;
:''Creating your first KTextEditor plugin''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Kate/KTextEditor_Plugins_Advanced|Developing a plugin with configuration dialog]]&lt;br /&gt;
:''Adding a configuration dialog to the Time &amp;amp; Date example''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Kate/KTextEditor_Example|A small Editor]]&lt;br /&gt;
:''Create a small application using KTextEditor''&lt;br /&gt;
&lt;br /&gt;
==Printing==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Printing Hello World|Hello World]]&lt;br /&gt;
:''Introduction to the KDE printing system''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Printing Print Dialog|Print Dialog]]&lt;br /&gt;
:''Using the KDE print dialog''&lt;br /&gt;
&lt;br /&gt;
== Get Hot New Stuff ==&lt;br /&gt;
; [[Development/Tutorials/K_Hot_New_Stuff2|New introduction to KGet Hot New Stuff2]]&lt;br /&gt;
:''A short tutorial about how to use KHotNewStuff2 in your application.''&lt;br /&gt;
&lt;br /&gt;
* old links for KNS1 content:&lt;br /&gt;
; [[Development/Tutorials/Introduction to Get Hot New Stuff|Introduction to Get Hot New Stuff]]&lt;br /&gt;
:''An introduction to the developer-friendly network update system that allows KDE applications to fetch new application data at runtime in a user friendly manner.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KNewStuffSecure|KNewStuff Secure]] ([http://developer.kde.org/documentation/tutorials/knewstuffsecure/index.html Original Link])&lt;br /&gt;
:''Tutorial showing how to share resources in a secured way (KDE 3.4 and later).''  By Andr&amp;amp;#225;s Mantia &amp;amp;lt;amantia@kde.org&amp;amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Goya ==&lt;br /&gt;
; [[Development/Tutorials/Introduction to Goya usage|Introduction to Goya usage]]&lt;br /&gt;
:''An introduction for the Goya subsystem usage, which allows you to easily add widgets to your itemviews and connect their signals to your code, as they were real widgets.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Introduction to Goya usage 2|Introduction to Goya usage (part 2)]]&lt;br /&gt;
:''The second part of the tutorial, with a slightly more complex example than the first part.''&lt;br /&gt;
&lt;br /&gt;
== Rapid Application Development ==&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Python introduction to signals and slots|101 Introduction to signals and slots]]&lt;br /&gt;
:''A simple introduction to Qt's signal and slot architecture.''&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
;[http://developer.kde.org/language-bindings/ruby/kde3tutorial/index.html KDE Ruby Korundum tutorial]&lt;br /&gt;
:''A ruby version of Antonio Larrosa Jim&amp;amp;eacute;nez's KDE tutorial by Richard Dale. See the [http://developer.kde.org/language-bindings/ruby/index.html Ruby Developers Corner] for Qt tutorials and other info.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Qt4_Ruby_Tutorial|Qt4 Ruby Tutorial]]&lt;br /&gt;
:''Trolltech's fabulous introductory tutorial to Qt, translated to Ruby.''&lt;br /&gt;
&lt;br /&gt;
=== Shell ===&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Shell_Scripting_with_KDE_Dialogs|Shell Scripting with KDE dialogs]] ([http://developer.kde.org/documentation/tutorials/kdialog/t1.html Original Link]) &lt;br /&gt;
:''Tutorial by [mailto:bradh@frogmouth.net Brad Hards] that describes how to use KDE dialogs in shell scripts with kdialog. It is presented as an example based tutorial.''&lt;br /&gt;
&lt;br /&gt;
== Graphics Programming ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Graphics/Performance|QPainter Perfomance]]&lt;br /&gt;
:''Hints on avoiding common mistakes leading to poor performance when using QPainter''&lt;br /&gt;
&lt;br /&gt;
== Other tutorials ==&lt;br /&gt;
&lt;br /&gt;
=== Using the KDE Games Library ===&lt;br /&gt;
;[[Development/Tutorials/Games/KStandardGameAction| KStandardGameAction]]&lt;br /&gt;
:''Using libkdegames to make your game fit the kdegames standard''&lt;br /&gt;
;[[Development/Tutorials/Games/Highscores| Highscores]]&lt;br /&gt;
:''Implementing a simple highscore table into your game''&lt;br /&gt;
;[[Development/Tutorials/Games/Theme Selector| Theme Selector]]&lt;br /&gt;
:''Using the libkdegames theme selection dialog''&lt;br /&gt;
&lt;br /&gt;
=== 2D Plotting (KPlotWidget) ===&lt;br /&gt;
;[[Development/Tutorials/KPlotWidget|Using the KDE data-plotting widget]]&lt;br /&gt;
:''This tutorial introduces KPlotWidget, which is used for 2-D data plotting.  It includes information on simple usage of the widget (including adding and modifying data sets, and customizing the plot axes and labels), and advanced customization (including extending the widget through sub-classing).''&lt;br /&gt;
&lt;br /&gt;
=== Spelling and Grammar Checking (Sonnet) ===&lt;br /&gt;
;[[Development/Tutorials/Sonnet/SonnetTutorial|Adding spell-checking or grammar-checking to KDE applications]]&lt;br /&gt;
:''This tutorial introduces Sonnet and how one may use it to add language correction to your KDE application. Sonnet's auxiliary features shall be described in a separate tutorial.''&lt;br /&gt;
&lt;br /&gt;
=== Pixmap cache (KPixmapCache) ===&lt;br /&gt;
;[[Development/Tutorials/KPixmapCache|Using the KDE pixmap cache]]&lt;br /&gt;
:''This tutorial shows how to use KPixmapCache to cache e.g. pixmaps generated from SVGs or some data.''&lt;br /&gt;
&lt;br /&gt;
=== Using MarbleWidget (Marble) ===&lt;br /&gt;
;[[Development/Tutorials/MarbleWidget|Using MarbleWidget]]&lt;br /&gt;
:''This short tutorial describes how to use the MarbleWidget in your project''&lt;br /&gt;
&lt;br /&gt;
=== Using local SCM for KDE development ===&lt;br /&gt;
;[[Development/Git|Using Git to develop for KDE]]&lt;br /&gt;
:''Here you find information on how to use Git to develop for KDE''&lt;br /&gt;
&lt;br /&gt;
== KDE2 and KDE3 Materials ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KDE3|KDE3 Tutorials]]&lt;br /&gt;
:''These tutorials cover topics related to KDE3.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KDE2|KDE2 Tutorials]]&lt;br /&gt;
:''These tutorials cover topics related to KDE2.''&lt;br /&gt;
&lt;br /&gt;
[[Category:KDE4]]&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials_(it)</id>
		<title>Development/Tutorials (it)</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials_(it)"/>
				<updated>2011-04-28T20:15:57Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Development/Tutorials}}&lt;br /&gt;
&lt;br /&gt;
I Tutorials sono la via piu' veloce di comprendere cosa KDE fa per te, e come lo fa.&lt;br /&gt;
Qui c'e' una lista dei tutorial disponibilie ''per KDE4''. Materiale per KDE3 e KDE2 e' disponibile in fondo alla pagina.&lt;br /&gt;
&lt;br /&gt;
== Introduzione alla programmazione di KDE 4 ==&lt;br /&gt;
&lt;br /&gt;
Sei interessato a scrivere applicazioni con KDE 4? Questa serie di tutorial e' mirata a questo completamente nuovo modo di programmare KDE.&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/First program (it)|Hello World]]&lt;br /&gt;
:''Un'introduzione preliminare alle basi della programmazione KDE4''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using KXmlGuiWindow (it)|Creazione della finestra principale (Main Window)]]&lt;br /&gt;
:''Questo tutorial ti mostra la magia di un aspetto molto importante di un'applicazione: La finestra principale (main window).''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using KActions|Usare le KActions]]&lt;br /&gt;
:''Come aggiungere eventi ai menu e alle toolbar.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Saving and loading|Salvataggio e Caricamento]]&lt;br /&gt;
:''Introduzione alla libreria KIO per il supporto al caricamento e salvataggio da una propria applicazione.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KCmdLineArgs|Argomenti della linea di comando]]&lt;br /&gt;
:''Aggiungere la capacita' di specificare quale file aprire dalla riga di comando nel proprio editor di testo.''&lt;br /&gt;
&lt;br /&gt;
== Basi ==&lt;br /&gt;
;[[Development/Tutorials/KDE4 Porting Guide|Effettuare il porting delle tue applicazioni]]&lt;br /&gt;
:''Aiuto per il porting di applicazioni da Qt3/KDE3 a Qt4/KDE4''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/CMake|Introduzione a CMake]]&lt;br /&gt;
:''Come usare il sistema di build CMake usato da KDE 4.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Common Programming Mistakes|Errori di Programmazione Comuni]]&lt;br /&gt;
:''Svariati errori comuni fatti durante lo sviluppo di Qt e KDE e come neutralizzarli.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using Qt Designer|Usare il Qt Designer per costruire interfacce utente]]&lt;br /&gt;
:''Come creare file UI con il designer, e come integrarli in un programma KDE.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Creating Libraries|Creare librerie per condividere il codice]]&lt;br /&gt;
:''Come aggiungere una libreria al sistema di build e come predisporre il codice sorgente.''&lt;br /&gt;
&lt;br /&gt;
== Testing e Debugging ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Debugging|Debugging delle tue applicazioni]]&lt;br /&gt;
:''Suggerimenti, strumenti e tecniche da applicare quando si esegue il debug delle proprie applicazioni KDE''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Unittests|Scrivere Unittests per Qt4 e KDE4 con QTestLib]] ([http://developer.kde.org/documentation/tutorials/writingunittests/writingunittests.html Link originale])&lt;br /&gt;
:''Tutorial da [mailto:bradh@frogmouth.net Brad Hards] che descrive come scrivere unit test usando il framework QTestLib. E' mostrato come un tutorial basato su esempi, ed e' in fase di sviluppo.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Code_Checking|Vie Semi-automatiche per rilevare errori nel codice]]&lt;br /&gt;
:''Tecniche che si possono usare per rilevare errori nel codice di KDE''&lt;br /&gt;
&lt;br /&gt;
== Gestire i dati di configurazione con KConfig ==&lt;br /&gt;
;[[Development/Tutorials/KConfig|Introduzione a KConfig]]&lt;br /&gt;
:''Una visione d'insieme delle classi di KConfig e come usarle nelle tue applicazioni''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using KConfig XT|Usare KConfig XT]]&lt;br /&gt;
:''Tutorial su come usare efficientemente il framework KConfig XT.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Updating KConfig Files|Aggiornare i file di KConfig]]&lt;br /&gt;
:''Tutorial su come scrivere uno script di aggiornamento per mantenere i cambiamenti nel formato dei file delle tue applicazioni in sincronia con i file di configurazione degli utenti gia' esistenti''&lt;br /&gt;
&lt;br /&gt;
== Servizi: Applicazioni e Plugins ==&lt;br /&gt;
;[[Development/Tutorials/Services/Introduction|Introduzione al Services Framework]]&lt;br /&gt;
:''Una visione d'insieme del services framework in KDE e di cosa fornisce agli sviluppatori. Copre la cache alla configurazione di sistema (SyCoCa), i files sorgente dati e come le informazioni indicizzate possono essere usate.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Services/Traders|Trovare i servizi tramite le queries di scambio (Trader Queries)]]&lt;br /&gt;
:''Come trovare servizi, come plugins o mimetypes, che sono indicizzati nella SyCoCa usando la sintassi delle Trader Queries''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Services/Plugins|Creare e Caricare Plugins Usando KService]]&lt;br /&gt;
:''Impara come definire tipi di plugin personalizzati, trovare plugin installati (inclusi plugin di terze parti) e caricarli in una maniera facile e portabile usando KService.''&lt;br /&gt;
&lt;br /&gt;
== Localizzazione ==&lt;br /&gt;
;[[Development/Tutorials/Localization/Unicode|Introduzione A Unicode]]&lt;br /&gt;
:''Una introduzione su cos'e' Unicode e come manipolare i dati Unicode nelle applicazioni KDE.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n|Scrivere applicazioni con la localizzazione in mente]]&lt;br /&gt;
:''Questo tutorial spiega che cos'e' la localizzazione, perche' e' importante e come assicurarsi che le tue applicazioni sono pronte ad essere localizzate. Un MUST per tutti gli sviluppatori.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Mistakes|Evitare i rischi comuni legati alla localizzazione]]&lt;br /&gt;
:''Ci sono svariati errori comuni che non consentono alle applicazioni di essere correttamente localizzate. Scopri in questo tutorial quali sono e come prevenirli facilmente.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/Building KDE's l10n Module|Compilare Moduli di localizzazione di KDE]]&lt;br /&gt;
:''Potrebbe essere una buona idea effetture la compilazione ed installazione del supporto alle lingue dal modulo di localizzazione (l10n) di KDE lavorandoci sopra. Questo modo ti permettera' di testare le tue applicazioni in altre lingue ed evidenziare le aree problematiche. Impara come farlo in questo tutorial.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Build Systems|Incorporare i18n nel sistema di build]]&lt;br /&gt;
:''Una volta che la tua applicazione e' pronta per essere localizzata, il prossimo passo e' di assicurarsi che i files di traduzione siano impacchettati automaticamente e mantenuti aggiornati. Questo tutorial tratta della necessarie aggiunte al CMakeFiles.txt oltre che del processo di distribuzione degli elenchi di messaggi risultanti con le tue applicazioni.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Challenges|Common i18n Challenges and Solutions]]&lt;br /&gt;
:''Questo tutorial mostra le sfide che potrai eventualmente affrontare traducendo gli handbook o altri dati che esistono al di fuori del codice sorgente, fondendo e maneggiando files .po obsoleti, codifiche in altri linguaggi rispetto all'inglese e la creazione di versioni indipendenti di o muovendo applicazioni tra moduli KDE. -- pessima traduzione ---&lt;br /&gt;
This tutorial covers challenges that you may eventually run into such as translating handbooks and other data that exists outside of the source code, merging and handling obsolete .po files, dealing with freezes, coding in languages other than English and creating independent releases of or moving applications between KDE modules.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n_Semantics|Markup Semantico dei Messaggi]]&lt;br /&gt;
:''Per assicurare una presentazione consistente e una rappresentazione maggiormente comprensibile nelle applicazioni, il markup semantico puo' essere applicato per le traduzioni usando il sistema KUIT. Questo tutorial descrive come lavora questo sistema.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Krazy|Automated i18n Code Checking]]&lt;br /&gt;
:''Il validatore di codice Krazy controlla il codice di KDE e riporta errori comuni sull'i18n.''&lt;br /&gt;
&lt;br /&gt;
== Documentazione ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/API_Documentation|Documentazione alle API]]&lt;br /&gt;
:''Questo tutorial spiega come documentare correttamente le tue API.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Man_Pages|Man Pages]]&lt;br /&gt;
:''Scrittura e generazione delle Man Pages di riferimento.''&lt;br /&gt;
&lt;br /&gt;
== Automazione e Scripting delle applicazioni ==&lt;br /&gt;
&lt;br /&gt;
=== D-Bus ===&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Introduction|Introduzione a D-Bus]]&lt;br /&gt;
:''Una introduzione ai concetti chiave di D-Bus dalla prospettiva dello sviluppatore, questo tutorial mostra cos'e' DBus e come puo' essere usato dalle applicazioni.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Accessing Interfaces|Accesso alle interfacce di D-Bus]]&lt;br /&gt;
:''Una guida passo-passo per chiamare i metodi di D-Bus e connettere i segnali di D-Bus tramite QtDBus.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Intermediate_D-Bus|D-Bus Intermedio]]&lt;br /&gt;
:''Suggerimenti per far uso di QtDBus quando si ha a che fare con interfacce del mondo reale problematiche.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Creating Interfaces|Creare Interfacce D-Bus]]&lt;br /&gt;
:''Impara come esporre funzionalita' nella tua applicazione creando ed usando interfacce D-Bus personalizzate. Tratta la generazione di descrizioni XML, instanziazione di interfacce a runtime e impostazione del sistema di build con CMake.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Autostart Services|Servizi in autoavvio con D-Bus]]&lt;br /&gt;
:''Trasforma la tua applicazione in un servizio in autoavvio di D-Bus con questo tutorial. Questa funzionalita' di D-Bus, anche conosciuta come &amp;quot;D-Bus service activation&amp;quot;, assicura che quando la tua applicazione non e' avviata le chiamate fatte verso di essa vengono intradate verso il demone di D-Bus che provvede ad avviare l'applicazione se e quando e' necessario.''&lt;br /&gt;
; [[Development/Tutorials/Porting_to_D-Bus|Porting da DCOP a D-Bus]]&lt;br /&gt;
: ''Effettua il Port della tua applicazione da DCOP a D-Bus con questa maneggevole guida.''&lt;br /&gt;
&lt;br /&gt;
=== Konqueror ===&lt;br /&gt;
; [[Development/Tutorials/Creating Konqueror Service Menus|Creare Menu di servizio su Konqueror]]&lt;br /&gt;
:''Questo tutorial ti mostra come creare azioni specifiche per mimetype nel menu contestuale di Konqueror (detto &amp;quot;servicemenu&amp;quot;).''&lt;br /&gt;
&lt;br /&gt;
=== Kross ===&lt;br /&gt;
; [[Development/Tutorials/Kross/Introduction|Introduzione a Kross]]&lt;br /&gt;
:''Una introduzione al Framework per lo Scripting Kross.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Hello_World|Hello World]]&lt;br /&gt;
:''Una prima applicazione che lavora con codice kross.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Call_Functions_in_Kross|Chiamare Funzioni in Kross]]&lt;br /&gt;
:''Semplice dimostrazione di chiamate a funzioni di scripting''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Connecting_Signals_and_slots_in_Kross|Connettere Signals e Slots a Kross]]&lt;br /&gt;
:''Semplice dimostrazione per la connessione di oggetti signals con script slots''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Scripts-as-Plugins|Scripts come Plugins con Kross]]&lt;br /&gt;
:''Questo tutorial fornisce una introduzione passo passo su come integrare script come plugin in un'applicazione KDE.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Script-Actions|Posizionare comandi da script nei menu della tua applicazione]]&lt;br /&gt;
:''Semplice dimostrazinoe su come estendere i menu della tua applicazione per eseguire script.''&lt;br /&gt;
&lt;br /&gt;
=== KOffice ===&lt;br /&gt;
; [[Development/Tutorials/KOffice Overview|Panoramica su KOffice]]&lt;br /&gt;
:''Questo documento mostra una panoramica sui differenti tipi di plugin di KOffice ed illustra per ognuno lo scopo ed i punti di forza. Se sei nuovizio ai plugin di KOffice, questo e' il punto di partenza.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Write a Flake Plugin|Creare Plugins per KOffice con Flake]]&lt;br /&gt;
:''Questo tutorial mostra come costruire un plugin per le applicazioni di KOffice per consentirti di inglobare contenuto di documenti ODF usando Flake.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/KWord Scripting|KWord Scripting]]&lt;br /&gt;
:''Questo tutorial mostra come creare script per KWord con Python, Ruby o JavaScript usando Kross.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/KSpread Scripting|KSpread Scripting]]&lt;br /&gt;
:''Questo tutorial mostra come creare script per KSpread con Python, Ruby o JavaScript usando Kross.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Krita Scripting|Krita Scripting]]&lt;br /&gt;
:''Questo tutorial mostra come creare script per Krita con Python, Ruby o JavaScript usando Kross.''&lt;br /&gt;
&lt;br /&gt;
=== SuperKaramba ===&lt;br /&gt;
; [[Development/Tutorials/SuperKaramba|SuperKaramba Tutorial]]&lt;br /&gt;
:''Questo tutorial fornisce una panoramica di SuperKaramba, file di tema e di scripting con Python, Ruby e JavaScript.''&lt;br /&gt;
&lt;br /&gt;
== Plugins e KParts ==&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Writing kontact plugins|Scrivere kontact plugins]]&lt;br /&gt;
:''Kontact plugins sono KParts. Questo tutorial descrive come scriverne uno.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Using KParts|Usare KParts]]&lt;br /&gt;
:''Impara come caricare una KPart in una finestra di applicazione.''&lt;br /&gt;
&lt;br /&gt;
== Ricerca e  Metadati ==&lt;br /&gt;
&lt;br /&gt;
=== Strigi ===&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Writing file analyzers|Scrivere analizzatori di file]]&lt;br /&gt;
:''Gli analizzatori di file estraggono dati dai file per mostrarli nelle finestre di dialogo e nel file manager. I dati raccolti in questo modo sono anche usati per la ricerca di files. KDE4 permette l'uso di analizzatori multipli per ogni tipo di file. Questo tutorial descrive come puoi scrivere nuovi analizzatori.''&lt;br /&gt;
&lt;br /&gt;
=== [http://nepomuk.kde.org Nepomuk] ===&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/Quickstart|Introduzione a Nepomuk]]&lt;br /&gt;
:''Come usare le risorse di Nepomuk in modo rapido ed indolore senza troppo chiasso.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/RDFIntroduction|RDF e Ontologie in Nepomuk]]&lt;br /&gt;
:''Una introduzione a RDF e all'uso delle ontologie in Nepomuk.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/Resources|Gestire risorse con Nepomuk]]&lt;br /&gt;
:''Nepomuk e' la libreria KDE che fornisce un semplice accesso ai metadati del sistema. Impara come rendere la tua applicazione abile alla creazione e lettura di metadati usando Nepomuk.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/ResourceGenerator|Usare il Nepomuk Resource Generator]]&lt;br /&gt;
:''Nepomuk include un generatore di risorse con cui creare classi di comodo per la gestione dei metadati.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/NepomukServer|Il Server Nepomuk]]&lt;br /&gt;
:''Il Server Nepomuk ospita il repository principale dei dati di Nepomuk e puo' essere acceduto direttamente via l'API Soprano.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/NepomukServices|Nepomuk Services]]&lt;br /&gt;
:''Il Server Nepomuk gestisce un set di servizi Nepomuk.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/AdvancedQueries|Queries Avanzate]]&lt;br /&gt;
:''Il potenziale reale di Nepomuk puo' essere esposto quando si eseguono pesanti queries sul repository dei dati. Questo tutorial fornisce un'introduzione alla semantica ed alla ricerca full-text in Nepomuk.''&lt;br /&gt;
&lt;br /&gt;
== Conoscenza dell'Hardware (Solid) ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Solid_Tutorials|Introduzione a Solid]]&lt;br /&gt;
:''Una introduzione all'uso della ricerca di hardware di Solid e all'interazione del sistema nelle applicazioni KDE.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Solid_Network_Tutorial|Accesso alle Informazioni di Rete]]&lt;br /&gt;
:''Come usare il Sistema Solid per reperire informazioni sulla rete.''&lt;br /&gt;
&lt;br /&gt;
== Multimedia (Phonon) ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Phonon/Introduction|Phonon]]&lt;br /&gt;
:''Come iniziare con le API multimediali''&lt;br /&gt;
&lt;br /&gt;
:''Come compilare e usare Phonon ed il suo backend GStreamer su Linux usando Qt 4.3.x''&lt;br /&gt;
::''Questo articolo ti da' un rapida introduzione su come usare checkout, compilare Phonon e il suo backend GStreamer su GNU/Linux con solo Qt 4.3.x. Fino alla fine, l'articolo descrive anche come uno sviluppatore puo' fare uso di Phonon per creare semplici video e audio players. Puoi leggere l'articolo [http://www.vcreatelogic.com/oss/docs/CompilingPhononOnLinux.pdf qui]. Puoi scaricare il file editabile in formato OpenDocumentText da [http://www.prashanthudupa.com/phonon/CompilingPhononOnLinux.odt qui].''&lt;br /&gt;
&lt;br /&gt;
== Plasma ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Plasma/GettingStarted|Iniziare con i Plasmoidi]]&lt;br /&gt;
:''Crea il tuo primo widget Plasma, o Plasmoide, in C++ con uno sfondo SVG, una icona ed un testo di esempio.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Plasma/DataEngines|Scrivere un DataEngine]]&lt;br /&gt;
:''I DataEngines forniscono una [http://api.kde.org/4.0-api/kdebase-apidocs/workspace/libs/plasma/html/classPlasma_1_1DataEngine.html  interfaccia standardizzata] a varie sorgenti dati per la visualizzazione e l'uso. Scopri cos'e' un DataEngine e come scriverne uno.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Plasma/UsingDataEngines|Usare DataEngines in un Plasmoide]]&lt;br /&gt;
:''Con un DataEngine, e' possibile recuperare dati per visualizzarli in un modo semplice e standard. Questo tutorial copre l'argomento di come usare i DataEngines per questo scopo nei Plasmoidi.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Plasma/AbstractRunner|Creare Runners]]&lt;br /&gt;
:''I Runners sono plugin che forniscono funzionalita' di ricerca action-based nel dialogo &amp;quot;esegui comando&amp;quot; dello spazio di lavoro di Plasma. Questi plugin possono essere usati da qualsiasi applicazione linkata a libplasma.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Plasma/Theme|Creare un tema per Plasma]]&lt;br /&gt;
:''Guida per la creazione del tuo primo tema per Plasma.''&lt;br /&gt;
&lt;br /&gt;
== Comunicazione (Decibel) ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Decibel/GettingStarted|Iniziare con Decibel]]&lt;br /&gt;
:''Questo tutorial mostra come impostare Decibel.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Decibel/Handling_TextChannels|Manipolare TextChannels]]&lt;br /&gt;
:''Questo tutorial introduce le basi sulla gestione di TextChannels in ingresso guidandoti attraverso la costruzione di una semplice applicazione di chat.''&lt;br /&gt;
&lt;br /&gt;
== Kate / Kwrite ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Kate/KTextEditor Plugins|Iniziare con i plugins di KTextEditor]]&lt;br /&gt;
:''Creare il tuo primo plugin di KTextEditor''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Kate/KTextEditor_Plugins_Advanced|Sviluppare un plugin con il dialogo di configurazione]]&lt;br /&gt;
:''Aggiungere un dialogo di configurazione all'esempio &amp;quot;Time &amp;amp; Date&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Kate/KTextEditor_Example|Un semplice Editor]]&lt;br /&gt;
:''Creare una piccola applicazione con KTextEditor''&lt;br /&gt;
&lt;br /&gt;
== Stampa ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Printing Hello World|Hello World]]&lt;br /&gt;
:''Introduzione al sistema di stampa di KDE''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Printing Print Dialog|Finestra di dialogo di Stampa]]&lt;br /&gt;
:''Usare la finestra di dialogo di stampa di KDE''&lt;br /&gt;
&lt;br /&gt;
== Get Hot New Stuff ==&lt;br /&gt;
; [[Development/Tutorials/K_Hot_New_Stuff2|New introduction to KGet Hot New Stuff2]]&lt;br /&gt;
:''A short tutorial about how to use KHotNewStuff2 in your application.''&lt;br /&gt;
&lt;br /&gt;
* old links for KNS1 content:&lt;br /&gt;
; [[Development/Tutorials/Introduction to Get Hot New Stuff|Introduction to Get Hot New Stuff]]&lt;br /&gt;
:''An introduction to the developer-friendly network update system that allows KDE applications to fetch new application data at runtime in a user friendly manner.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KNewStuffSecure|KNewStuff Secure]] ([http://developer.kde.org/documentation/tutorials/knewstuffsecure/index.html Original Link])&lt;br /&gt;
:''Tutorial showing how to share resources in a secured way (KDE 3.4 and later).''  By Andr&amp;amp;#225;s Mantia &amp;amp;lt;amantia@kde.org&amp;amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Goya ==&lt;br /&gt;
; [[Development/Tutorials/Introduction to Goya usage|Introduzione all'uso di Goya]]&lt;br /&gt;
:''Una introduzione all'uso del sottosistema Goya, che ti permette di aggiungere widgets semplicemente  alle tue itemview e connettere i loro signal al tuo codice, come se fossero widgets reali.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Introduction to Goya usage 2|Introduzione all'uso di Goya(parte 2)]]&lt;br /&gt;
:''La seconda parte del tutorial, con una with a leggera complessita' in piu' rispetto alla prima parte.''&lt;br /&gt;
&lt;br /&gt;
== Sviluppo Rapido di Applicazioni (RAD) ==&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Python introduction to signals and slots|101 Introduzione ai signals e slots]]&lt;br /&gt;
:''Una semplice introduzione all'architettura signal e slot di Qt.''&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
;[http://developer.kde.org/language-bindings/ruby/kde3tutorial/index.html KDE Ruby Korundum tutorial]&lt;br /&gt;
:''A ruby version of Antonio Larrosa Jim&amp;amp;eacute;nez's KDE tutorial by Richard Dale. See the [http://developer.kde.org/language-bindings/ruby/index.html Ruby Developers Corner] for Qt tutorials and other info.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Qt4_Ruby_Tutorial|Tutorial su Qt4 Ruby]]&lt;br /&gt;
:''Favoloso tutorial introduttivo sulle Qt di Trolltech, tradotto in Ruby.''&lt;br /&gt;
&lt;br /&gt;
=== Shell ===&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Shell_Scripting_with_KDE_Dialogs|Shell Scripting con i dialoghi di KDE]] ([http://developer.kde.org/documentation/tutorials/kdialog/t1.html Link Originale]) &lt;br /&gt;
:''Tutorial da [mailto:bradh@frogmouth.net Brad Hards] che descrive come usare le finestre di dialogo di KDE negli script di shell usando kdialog. E' presentato come un tutorial basato su esempi.''&lt;br /&gt;
&lt;br /&gt;
== Programmazione Grafica ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Graphics/Performance|Perfomance di QPainter]]&lt;br /&gt;
:''Suggerimenti per evitare errori comuni che producono scarse prestazioni nell'uso di QPainter''&lt;br /&gt;
&lt;br /&gt;
== Altri tutorials ==&lt;br /&gt;
&lt;br /&gt;
=== Usare la Games Library di KDE ===&lt;br /&gt;
;[[Development/Tutorials/Games/KStandardGameAction| KStandardGameAction]]&lt;br /&gt;
:''Usare libkdegames per rendere i propri giochi adatti allo standard per i giochi di kde''&lt;br /&gt;
;[[Development/Tutorials/Games/Highscores| Highscores]]&lt;br /&gt;
:''Implementare una tabella per la classifica nei tuoi giochi''&lt;br /&gt;
;[[Development/Tutorials/Games/Theme Selector| Selettore dei temi]]&lt;br /&gt;
:''Usare la finestra di dialogo per i temi da libkdegames''&lt;br /&gt;
&lt;br /&gt;
=== 2D Plotting (KPlotWidget) ===&lt;br /&gt;
;[[Development/Tutorials/KPlotWidget|Usare il widget data-plotting di kde]]&lt;br /&gt;
:''Questo tutorial introduce KPlotWidget, usato per il plotting di dati 2-D. Include informazioni sull'uso semplice del widget (includendo aggiunta e modifica dei data sets, e personalizzazione degli assi e delle etichette), e personalizzazioni avanzate (inclusa l'estensione del widget attraverso sottoclassi).''&lt;br /&gt;
&lt;br /&gt;
=== Controllo Lessicale e Grammaticale (Sonnet) ===&lt;br /&gt;
;[[Development/Tutorials/Sonnet/SonnetTutorial|Aggiungere controllo lessicale o grammaticale alle applicazioni KDE]]&lt;br /&gt;
:''Questo tutorial introduce Sonnet e come uno puo' usarli per aggiungere la correzione linguistica nelle tue applicazioni KDE. Le funzionalita' ausiliarie di Sonnet saranno descritte in un tutorial separato.''&lt;br /&gt;
&lt;br /&gt;
=== Pixmap cache (KPixmapCache) ===&lt;br /&gt;
;[[Development/Tutorials/KPixmapCache|Usare la pixmap cache di KDE]]&lt;br /&gt;
:''Questo tutorial mostra come usare KPixmapCache per il caching(per es. pixmaps generate da SVG o altri dati).''&lt;br /&gt;
&lt;br /&gt;
=== Usare MarbleWidget (Marble) ===&lt;br /&gt;
;[[Development/Tutorials/MarbleWidget|Usare MarbleWidget]]&lt;br /&gt;
:''Questo breve tutorial descrive come usare il MarbleWidget nei tuoi progetti''&lt;br /&gt;
&lt;br /&gt;
=== Usare SCM locali per lo sviluppo di KDE ===&lt;br /&gt;
;[[Development/Git|Usare Git per sviluppare per KDE]]&lt;br /&gt;
:''Questo tutorial mostra come usare Git per sviluppare per KDE''&lt;br /&gt;
&lt;br /&gt;
== Materiali su KDE2 e KDE3 ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KDE3|Tutorials su KDE3]]&lt;br /&gt;
:''Questi tutorials coprono gli argomenti relativi a KDE3.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KDE2|Tutorials su KDE2]]&lt;br /&gt;
:''Questi tutorials coprono gli argomenti relativi a KDE2.''&lt;br /&gt;
&lt;br /&gt;
[[Category:KDE4]]&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials_(es)</id>
		<title>Development/Tutorials (es)</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials_(es)"/>
				<updated>2011-04-28T20:15:19Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Development/Tutorials}}&lt;br /&gt;
&lt;br /&gt;
Los tutoriales son la forma más rápida de encontrar lo que KDE puede hacer por usted y como hacerlo. Aquí tienes una lista de los tutoriales disponibles actualmente para KDE4. El material para KDE3 y KDE2 está disponible al final de la página.&lt;br /&gt;
&lt;br /&gt;
== Introducción a la programación en KDE4 ==&lt;br /&gt;
&lt;br /&gt;
¿Estás interesado en escribir aplicación en KDE4? Esta serie de tutoriales están dirigidos a personas totalmente novatas en la programación en KDE4.&lt;br /&gt;
;[[Development/Tutorials/First program_(es)|Hola Mundo]]&lt;br /&gt;
&lt;br /&gt;
:''Una introducción preliminar a los aspectos básicos de la programación en KDE4.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using KXmlGuiWindow_(es)|Crear la ventana principal]]&lt;br /&gt;
&lt;br /&gt;
:''Este tutorial te muestra la magia de la cosa mas importante en una aplicación: la ventana principal''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using KActions_(es)|Usar KActions]]&lt;br /&gt;
&lt;br /&gt;
:''Como añadir acciones a los menús y a las barras de herramientas (toolbars).''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Saving and loading_(es)|Guardar y Abrir]]&lt;br /&gt;
&lt;br /&gt;
:''Introducción a la biblioteca KIO mientras añades soporte para guardar y abrir en tu aplicación.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KCmdLineArgs_(es)|Argumentos en la línea de órdenes]]&lt;br /&gt;
&lt;br /&gt;
:''Añade la capacidad de especificar a nuestro editor que archivo abrir desde la línea de ordenes.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Session_Management_(es)|Administración de sesiones]]&lt;br /&gt;
&lt;br /&gt;
:''Haz que tu aplicación sea consciente de las sesiones X''&lt;br /&gt;
&lt;br /&gt;
== Básicos ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KDE4 Porting Guide (es)|Portar tu aplicación]]&lt;br /&gt;
&lt;br /&gt;
:''Ayuda para portar aplicaciones de Qt3/KDE3 a Qt4/KDE4.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/CMake|Introducción a CMake]]&lt;br /&gt;
&lt;br /&gt;
:''Como usar el sistema de construcción CMake usado por KDE4.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Common Programming Mistakes|Errores comunes de programación]]&lt;br /&gt;
&lt;br /&gt;
:''Varios errores comunes que se presentan en el desarrollo de aplicaciones Qt y KDE y como evitarlos.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using Qt Designer|Usar Qt Designer para diseñar interfaces de usuario]]&lt;br /&gt;
&lt;br /&gt;
:''Como crear archivos UI con el diseñador, y como integrarlos después en un programa KDE.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Creating Libraries|Crear bibliotecas para compartir código]]&lt;br /&gt;
&lt;br /&gt;
:''Como añadir la biblioteca al sistema de construcción &amp;quot;buildsystem&amp;quot; y como preparar el código fuente.''&lt;br /&gt;
&lt;br /&gt;
== Comprobación y depurado ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Debugging|Depurar tu aplicación]]&lt;br /&gt;
&lt;br /&gt;
:''Consejos, herramientas y técnicas para depurar tu aplicación KDE.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Unittests|Escribir &amp;quot;unittests&amp;quot; para Qt4 y KDE4 con QTestLib]] &lt;br /&gt;
&lt;br /&gt;
([http://developer.kde.org/documentation/tutorials/writingunittests/writingunittests.html enlace original])&lt;br /&gt;
&lt;br /&gt;
:''Tutorial de [mailto:bradh@frogmouth.net Brad Hards] que describe como escribir unittests mediante la framework QTestLib. El tutorial se realiza con un ejemplo, y aun está en desarrollo.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Code_Checking|Maneras semiautomáticas de detectar errores en el código]]&lt;br /&gt;
&lt;br /&gt;
:''Técnicas que puedes usar para detectar errores en el código KDE.''&lt;br /&gt;
&lt;br /&gt;
== Gestión de los datos de configuración con KConfig ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KConfig|Introducción a KConfig]]&lt;br /&gt;
&lt;br /&gt;
:''Una sinopsis de las clases de KConfig y como usarlas en el código de tu aplicación.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using KConfig XT|Uso de KConfig XT]]&lt;br /&gt;
&lt;br /&gt;
:''Tutorial sobre como usar eficientemente el framework KConfig XT''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Updating KConfig Files|Actualizando archivos con KConfig]]&lt;br /&gt;
&lt;br /&gt;
:''Tutorial sobre como escribir un script de actualización para conservar los cambios de tu archivo de configuración de tu aplicación y sincronizarlo con el archivo de configuración del usuario''&lt;br /&gt;
&lt;br /&gt;
== Servicios: Aplicaciones y Plugins ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Services/Introduction|Introducción al framework de Servicios]]&lt;br /&gt;
&lt;br /&gt;
:''Una visión general del framework de Servicios en KDE y qué proporciona a los desarrolladores de aplicaciones. Trata sobre la cache de configuración del sistema (SyCoCa), los archivos de datos fuente y el uso que puede darse a la información indexada.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Services/Traders|Encontrar Servicios usando consultas con operadores (Trader Queries)]]&lt;br /&gt;
&lt;br /&gt;
:''Como encontrar servicios, como plugins o tipos MIME (mimetypes), que están indexados en SyCoCa, usando la sintaxis de preguntas con operadores (Trader Query Syntax).''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Services/Plugins|Crear y cargar Plugins mediante KService]]&lt;br /&gt;
&lt;br /&gt;
:''Aprende como definir plugins propios, encontrar plugins instalados (incluidos plugins de terceras partes) y cargarlos de forma fácil y portable usando KService.''&lt;br /&gt;
&lt;br /&gt;
== Localización ==&lt;br /&gt;
&lt;br /&gt;
Véase también el [[Localization|Portal de Localización]].&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Localization/Unicode|Introducción a Unicode]]&lt;br /&gt;
&lt;br /&gt;
:''Una introducción a [http://es.wikipedia.org/wiki/Unicode Unicode], así como la forma de manejar datos Unicode en las aplicaciones de KDE.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Localization/i18n|Escribir aplicaciones teniendo en cuenta la Localización]]&lt;br /&gt;
&lt;br /&gt;
:''Este tutorial trata sobre que es la localización, por que es importante y como asegurarse de que tu aplicación está lista para ser localizada. Una lectura obligatoria para todos los desarrolladores de aplicaciones.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Localization/i18n Mistakes|Evitar errores comunes en la localización]]&lt;br /&gt;
&lt;br /&gt;
:''Existen algunos errores comunes que impiden que las aplicaciones sean localizadas correctamente. Descubre cuales son y como evitarlos facilmente en este tutorial.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/Building KDE's l10n Module|Construir el módulo de Localización de KDE]]&lt;br /&gt;
&lt;br /&gt;
:''Construir e instalar el soporte de idiomas del módulo de localización de KDE (l10n) es una buena idea para aquellos que están trabajando en aplicaciones del repositorio principal de KDE.  Si lo haces, te permitirá probar tu aplicación en otro idioma y tratar los posibles errores. Aprende como llevarlo a cabo en este tutorial.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Build Systems|Incorporar l18n a la construcción del sistema]]&lt;br /&gt;
&lt;br /&gt;
:''Una vez que tu aplicación está lista para ser localizada, el siguiente paso es asegurarse que los archivos de traducción se construyen automáticamente y que estos estén actualizados. Este tutorial cubre los añadidos necesarios en CMakeLists.txt, así como el proceso de distribuir el catálogo de mensajes resultante junto a tu aplicación.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Challenges|Retos comunes en i18n y soluciones]]&lt;br /&gt;
&lt;br /&gt;
:''Este tutorial trata sobre cambios que se pueden introducir eventualmente en tareas tales como traducir manuales (handbooks) y otros datos que existen fuera del código fuente, fusionando , manejando ficheros .po obsoletos, tratando con freezes, codificando en idiomas distintos del Inglés y creando releases independientes de o moviendo aplicaciones entre módulos de KDE.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n_Semantics|Marcado semántico de los mensajes]]&lt;br /&gt;
&lt;br /&gt;
:''Para garantizar una presentación consistente y una representación más significativa de los mensajes en las aplicaciones, el marcado semántico puede aplicarse a los mensajes marcados para la traducción utilizando el sistema KUIT. Este tutorial describe como trabaja este sistema.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Krazy|Comprobación automática de código i18n]]&lt;br /&gt;
&lt;br /&gt;
:''El &amp;quot;Krazy code checker&amp;quot; comprueba el código e informa de los errores comunes de i18n.''&lt;br /&gt;
&lt;br /&gt;
== Documentación ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/API_Documentation|API Documentation]]&lt;br /&gt;
&lt;br /&gt;
:''Este tutorial explica como documentar las APIs correctamente.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Man_Pages|Man Pages]]&lt;br /&gt;
&lt;br /&gt;
:''Escribiendo y Generando Páginas del Manual de Referencia.''&lt;br /&gt;
&lt;br /&gt;
== Automatización de aplicaciones y Scripting ==&lt;br /&gt;
&lt;br /&gt;
=== D-Bus ===&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Introduction_(es)|Introducción a D-Bus]]&lt;br /&gt;
&lt;br /&gt;
:''Una introducción dirigida a comprender los conceptos relacionados con D-Bus desde una perspectiva del diseñador de aplicaciones, este tutorial trata sobre que es D-Bus y como puede ser utilizado por las aplicaciones.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Accessing Interfaces|Accediendo a los Interfaces de D-Bus]]&lt;br /&gt;
&lt;br /&gt;
:''Una guia paso a paso sobre como llamar a métodos D-Bus y conectar con señales de D-Bus utilizando para ello QtDBus.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Intermediate_D-Bus|D-Bus Intermedio]]&lt;br /&gt;
&lt;br /&gt;
:''Consejos para hacer uso de QtDBus cuando se enfrentan con interfaces problemáticos del mundo real.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Creating Interfaces|Creando Interfaces D-Bus Interfaces]]&lt;br /&gt;
&lt;br /&gt;
:''Aprender como añadir funcionalidad a tus aplicaciones creando y utilizando interfaces personalizados D-Bus. Cubre como se generan las descripciones XML, el instanciado de interfaces en tiempo de ejecución y estableciendo el sistema de construcción con CMake.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Autostart Services_(es)|Servicios de autoinicio de D-Bus]]&lt;br /&gt;
&lt;br /&gt;
:''Convierte tu aplicación en un servicio autoarrancable D-Bus con este tutorial. Esta característica de D-Bus, también conocida como &amp;quot;activación de servicio D-Bus&amp;quot;, asegurará que las llamadas realizadas a D-Bus funcionarán confiando en el propio demonio (daemon) que la pondrá en marcha si tu aplicación no está arrancada en ese momento. &lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Porting_to_D-Bus|Portando desde DCOP a D-Bus]]&lt;br /&gt;
&lt;br /&gt;
: ''Porta tus aplicaciones desde DCOP a D-Bus con esta sencilla guía.''&lt;br /&gt;
&lt;br /&gt;
=== Konqueror ===&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Creating Konqueror Service Menus|Creating Konqueror Service Menus]]&lt;br /&gt;
&lt;br /&gt;
:''Este tutorial muestra como crear acciones especificas tipo MIME en el contexto de menús de Konqueror (aka &amp;quot;servicemenus&amp;quot;).''&lt;br /&gt;
&lt;br /&gt;
=== Kross ===&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Introduction|Introduction to Kross]]&lt;br /&gt;
&lt;br /&gt;
:''An introduction to the Kross Scripting Framework.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Hello_World|Hello World]]&lt;br /&gt;
&lt;br /&gt;
:''A first application with working kross code.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Call_Functions_in_Kross|Calling Functions in Kross]]&lt;br /&gt;
&lt;br /&gt;
:''Demostración simple de llamada a funciones de scripting''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Connecting_Signals_and_slots_in_Kross|Connecting Signals and Slots in Kross]]&lt;br /&gt;
&lt;br /&gt;
:''Simple demonstration of connecting object signals with script slots''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Scripts-as-Plugins|Scripts as Plugins with Kross]]&lt;br /&gt;
&lt;br /&gt;
:''This tutorial provides a step-by-step introduction how to integrate scripts as plugins into a KDE application.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Scripts-as-KPlugins|Load Kross Scripts as KPlugins]]&lt;br /&gt;
&lt;br /&gt;
:''This tutorial provides a step-by-step introduction how to load scripts as KPlugins.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Script-Actions|Placing script actions in your application menus ]]&lt;br /&gt;
&lt;br /&gt;
:''Simple demonstration on how to extend you application menus to execute script files.''&lt;br /&gt;
&lt;br /&gt;
=== Plugins para KOffice ===&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/KOffice Overview|KOffice Overview]]&lt;br /&gt;
&lt;br /&gt;
:''This document shows an overview of the different KOffice plugin types and tells you what each of their purpose and strengths are.''  Si eres nuevo en el tema de plugins de KOffice, este es el lugar correcto para comenzar el aprendizaje.&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Write a Flake Plugin|Creating KOffice Flake Plugins]]&lt;br /&gt;
&lt;br /&gt;
:''This tutorial shows you how you can build a plugin for KOffice applications to allow you embed content in ODF documents using Flake.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/KWord Scripting|KWord Scripting]]&lt;br /&gt;
&lt;br /&gt;
:''This tutorial shows how to script KWord with Python, Ruby or JavaScript using Kross.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/KSpread Scripting|KSpread Scripting]]&lt;br /&gt;
&lt;br /&gt;
:''This tutorial shows how to script KSpread with Python, Ruby or JavaScript using Kross.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Krita Scripting|Krita Scripting]]&lt;br /&gt;
&lt;br /&gt;
:''This tutorial shows how to script Krita with Python, Ruby or JavaScript using Kross.''&lt;br /&gt;
&lt;br /&gt;
=== SuperKaramba ===&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/SuperKaramba|SuperKaramba Tutorial]]&lt;br /&gt;
&lt;br /&gt;
:''This tutorial provides an overview of SuperKaramba, theme files and scripting with Python, Ruby and JavaScript.''&lt;br /&gt;
&lt;br /&gt;
== Plugins y KParts ==&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Writing kontact plugins|Writing kontact plugins]]:&lt;br /&gt;
&lt;br /&gt;
''Kontact plugins are KParts. This tutorial describes how you can write one.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Using KParts|Using KParts]]:&lt;br /&gt;
&lt;br /&gt;
''Learn how to load a KPart into an application window.''&lt;br /&gt;
&lt;br /&gt;
== Búsqueda y Metadatos ==&lt;br /&gt;
&lt;br /&gt;
=== Strigi ===&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Writing file analyzers|Writing file analyzers]]&lt;br /&gt;
&lt;br /&gt;
:''File analyzers extract data from files to display in the file dialogs and file managers. The data gathered this way is also used to search for files. KDE4 allows the use of multiple analyzers per file type. This tutorial describes how you can write new analyzers.''&lt;br /&gt;
&lt;br /&gt;
=== [http://nepomuk.kde.org Nepomuk] ===&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/Quickstart|Nepomuk Quickstart]]&lt;br /&gt;
&lt;br /&gt;
:''How to use Nepomuk resources in a quick and painless way without much fuss.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/RDFIntroduction|RDF and Ontologies in Nepomuk]]&lt;br /&gt;
&lt;br /&gt;
:''An introduction to RDF and the usage of ontologies in Nepomuk.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/Resources|Handling Resources with Nepomuk]]&lt;br /&gt;
&lt;br /&gt;
:''Nepomuk is the KDE library which provides easy access to metadata in the Nepomuk system. Learn how to make your application create and read metadata using the Nepomuk system.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/ResourceGenerator|Using the Nepomuk Resource Generator]]&lt;br /&gt;
&lt;br /&gt;
:''Nepomuk includes a resource generator which creates convenience classes for handling metadata.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/AdvancedQueries|Advanced Queries]]&lt;br /&gt;
&lt;br /&gt;
:''The real power of Nepomuk can only be exposed when performing fancy queries on the data repository. This tutorial provides an introduction to semantic and full text queries in Nepomuk.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/NepomukServer|The Nepomuk Server and the Architecture of the Nepomuk subsystem]]&lt;br /&gt;
&lt;br /&gt;
:''The Nepomuk Server hosts the main Nepomuk data repository and can be accessed directly via a Soprano API.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/NepomukServices|Nepomuk Services]]&lt;br /&gt;
&lt;br /&gt;
:''The Nepomuk Server manages a set of Nepomuk services.''&lt;br /&gt;
&lt;br /&gt;
:* [[Development/Tutorials/Metadata/Nepomuk/StorageService|Storage Service]] ''The probably most important service hosts the Nepomuk data repository using [http://soprano.sourceforge.net Soprano].''&lt;br /&gt;
&lt;br /&gt;
:* [[Development/Tutorials/Metadata/Nepomuk/OntologyLoaderService|Ontology Loader]] ''Makes sure installed ontologies such as RDF, RDFS, NRL, or Xesam are loaded into the storage repository.''&lt;br /&gt;
&lt;br /&gt;
:* [[Development/Tutorials/Metadata/Nepomuk/FileWatchService|File Watch Service]] ''Monitors the file system for changes and updates the file resource paths and URIs in Nepomuk.''&lt;br /&gt;
&lt;br /&gt;
:* [[Development/Tutorials/Metadata/Nepomuk/StrigiService|Strigi Service]]&lt;br /&gt;
&lt;br /&gt;
''Controls Strigi, the file indexing tool which extracts metadata from files and stores it into the storage repository.''&lt;br /&gt;
:* [[Development/Tutorials/Metadata/Nepomuk/QueryService|Query Service]] ''Provides persistant query folders.''&lt;br /&gt;
&lt;br /&gt;
== Conciencia del Hardware (Solid) ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Solid_Tutorials|Introduction to Solid]]&lt;br /&gt;
&lt;br /&gt;
:''Una introducción sobre como usar el robusto sistema para descubrir hardware e interactuar con el sistema en aplicaciones KDE.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Solid_Network_Tutorial|Accessing Network Information]]&lt;br /&gt;
&lt;br /&gt;
:''Como utilizar el robusto sistema de KDE para obtener información sobre la red (network)''&lt;br /&gt;
&lt;br /&gt;
== Aplicaciones con privilegios (PolicyKit) ==&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/PolicyKit/Introduction|Introduction to PolicyKit]]&lt;br /&gt;
&lt;br /&gt;
:''A straight-forward introduction to what PolicyKit is, and how it can be useful for your next application requiring super-user privileges or user authentication''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/PolicyKit/Helper_HowTo|Using the caller-helper model to perform actions as root]]&lt;br /&gt;
&lt;br /&gt;
:''This tutorial will teach you how to get your application to perform some actions as root in a completely safe and easy manner, if the user is authorized to, by using PolicyKit and the caller-helper technique''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/PolicyKit/KCM_HowTo|Getting root privileges in KCM Modules]]&lt;br /&gt;
&lt;br /&gt;
:''This tutorial will teach you how to create KCModules able to save settings as root''&lt;br /&gt;
&lt;br /&gt;
== Multimedia (Phonon) ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Phonon/Introduction|Phonon]]&lt;br /&gt;
&lt;br /&gt;
:''Como iniciarse en la API multimedia''&lt;br /&gt;
&lt;br /&gt;
:''How to compile and use Phonon and its GStreamer backend on Linux using Qt 4.3.x''&lt;br /&gt;
&lt;br /&gt;
::''This article gives you a quick brief of how you can use checkout, compile Phonon and its GStreamer backend on GNU/Linux with just Qt 4.3.x. Towards the end, the article also describes how a developer can make use of Phonon to create simple audio and video players. You can read the article [http://www.vcreatelogic.com/oss/docs/CompilingPhononOnLinux.pdf here]. You can download the editable OpenDocumentText file from [http://www.prashanthudupa.com/phonon/CompilingPhononOnLinux.odt here].''&lt;br /&gt;
&lt;br /&gt;
== Plasma ==&lt;br /&gt;
&lt;br /&gt;
See [[Development/Tutorials/Plasma_(es)]] for Plasma tutorials.&lt;br /&gt;
&lt;br /&gt;
== Comunicación (Decibel) ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Decibel/GettingStarted|Getting started with Decibel]]&lt;br /&gt;
&lt;br /&gt;
:''Este tutorial describe como configurar Decibel.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Decibel/Handling_TextChannels|Handling TextChannels]]&lt;br /&gt;
&lt;br /&gt;
:''This tutorial introduces the basics of handling incoming TextChannels by guiding you through building a simple text chat application.''&lt;br /&gt;
&lt;br /&gt;
== Administración de información personal (Akonadi) ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Akonadi/Application|Using Akonadi in Applications]]&lt;br /&gt;
&lt;br /&gt;
:''Mostrando y modificando datos aportados por Akonadi''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Akonadi/Resources|Developing Akonadi Resources]]&lt;br /&gt;
&lt;br /&gt;
:''Akonadi Resources are agent programs which transport PIM data between Akonadi and a backend (files, servers, etc)''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Akonadi/SerializerPlugin|Using custom data types with Akonadi]]&lt;br /&gt;
&lt;br /&gt;
:''Akonadi can handle arbitrary data as item payloads through the use of a plugin based serialization framework''&lt;br /&gt;
&lt;br /&gt;
== Kate / Kwrite ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Kate/KTextEditor Plugins|Getting started with KTextEditor plugins]]&lt;br /&gt;
&lt;br /&gt;
:''Creando tu primer plugin de KTextEditor''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Kate/KTextEditor_Plugins_Advanced|Developing a plugin with configuration dialog]]&lt;br /&gt;
&lt;br /&gt;
:''Añadiendo un diálogo de configuración al ejemplo de hora y fecha (Time &amp;amp; Date)''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Kate/KTextEditor_Example|A small Editor]]&lt;br /&gt;
&lt;br /&gt;
:''Crear una pequeña aplicación utilizando KTextEditor''&lt;br /&gt;
&lt;br /&gt;
== Impresión ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Printing Hello World|Hello World]]&lt;br /&gt;
&lt;br /&gt;
:''Introducción al sistema de impresión de KDE''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Printing Print Dialog|Print Dialog]]&lt;br /&gt;
&lt;br /&gt;
:''Utilizando el diálogo de impresión de KDE''&lt;br /&gt;
&lt;br /&gt;
== kioslaves ==&lt;br /&gt;
&lt;br /&gt;
* [[Development/Tutorials/KIO Slaves/Using KIO Slaves in your Program|Using kioslaves in your Program]]&lt;br /&gt;
&lt;br /&gt;
* [[Development/Tutorials/KIO Slaves/Hello World|Creating a Hello-World kioslave]]&lt;br /&gt;
&lt;br /&gt;
== Obtener nuevas características (Hot New Stuff) ==&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/K_Hot_New_Stuff2|New introduction to Get Hot New Stuff 2]]&lt;br /&gt;
&lt;br /&gt;
:''A short tutorial about how to use KHotNewStuff2 in your application.''&lt;br /&gt;
&lt;br /&gt;
* old links for KNS1 content:&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Introduction to Get Hot New Stuff|Introduction to Get Hot New Stuff]]&lt;br /&gt;
&lt;br /&gt;
:''An introduction to the developer-friendly network update system that allows KDE applications to fetch new application data at runtime in a user friendly manner.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KNewStuffSecure|KNewStuff Secure]] &lt;br /&gt;
&lt;br /&gt;
([http://developer.kde.org/documentation/tutorials/knewstuffsecure/index.html Original Link])&lt;br /&gt;
&lt;br /&gt;
:''Tutorial showing how to share resources in a secured way (KDE 3.4 and later).''  By Andr&amp;amp;#225;s Mantia &amp;amp;lt;amantia@kde.org&amp;amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Goya ==&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Introduction to Goya usage|Introduction to Goya usage]]&lt;br /&gt;
&lt;br /&gt;
:''An introduction for the Goya subsystem usage, which allows you to easily add widgets to your itemviews and connect their signals to your code, as they were real widgets.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Introduction to Goya usage 2|Introduction to Goya usage (part 2)]]&lt;br /&gt;
&lt;br /&gt;
:''La segunda parte del tutorial, con un ejemplo ligeramente más complejo que el de la primera parte.''&lt;br /&gt;
&lt;br /&gt;
== Otros lenguajes de programación ==&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
;[http://www.learningpython.com/2008/09/20/an-introduction-to-pyqt/ An Introduction to PyQt]&lt;br /&gt;
&lt;br /&gt;
:''Starting off''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Languages/Python/PyKDE_WebKit_Tutorial|PyKDE WebKit Tutorial]]&lt;br /&gt;
&lt;br /&gt;
:''Una simple aplicación de navegador WEB en PyKDE''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Python introduction to signals and slots|101 Introduction to signals and slots]]&lt;br /&gt;
&lt;br /&gt;
:''A simple introduction to Qt's signal and slot architecture.''&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
;[http://developer.kde.org/language-bindings/ruby/kde3tutorial/index.html KDE Ruby Korundum tutorial]&lt;br /&gt;
:''A ruby version of Antonio Larrosa Jim&amp;amp;eacute;nez's KDE tutorial by Richard Dale. See the [[Development/Languages/Ruby (es)|Ruby Developers Corner]] for Qt tutorials and other info.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Qt4_Ruby_Tutorial|Qt4 Ruby Tutorial]]&lt;br /&gt;
:''Trolltech's fabulous introductory tutorial to Qt, translated to Ruby.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Plasma/RubyApplet|Creating a Plasma Widget in Ruby]]&lt;br /&gt;
:''Tutorial que muestra como crear tu primer Applet de Plasma utilizando el lenguaje Ruby.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Developing_Qt4_Applications_using_Qt_Designer_and_Ruby_on_Kubuntu|Developing Qt4 Applications using Qt Designer and Ruby on Kubuntu]]&lt;br /&gt;
:''Tutorial that shows how to design a simple User Interface in Qt Designer and then use the resulting widget in a Qt Ruby application we build from scratch.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Languages/Ruby/Ruby-Qt/KDE_Book|Ruby-Qt/KDE Book]]&lt;br /&gt;
:''There is also an approach to create an Ruby-Qt/KDE Book under a free license. The content will be created in this wiki.''&lt;br /&gt;
&lt;br /&gt;
=== Shell ===&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Shell_Scripting_with_KDE_Dialogs|Shell Scripting with KDE dialogs]] ([http://developer.kde.org/documentation/tutorials/kdialog/t1.html Enlace original]) &lt;br /&gt;
&lt;br /&gt;
:''Tutorial by [mailto:bradh@frogmouth.net Brad Hards] that describes how to use KDE dialogs in shell scripts with kdialog. It is presented as an example based tutorial.''&lt;br /&gt;
&lt;br /&gt;
== Programación gráfica ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Graphics/Performance|QPainter Perfomance]]&lt;br /&gt;
&lt;br /&gt;
:''Sugerencias sobre como evitar errores habituales relacionados con bajos rendimientos en el uso de QPainter''&lt;br /&gt;
&lt;br /&gt;
== Uso de las bibliotecas de KDE para juegos ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Games/KStandardGameAction| KStandardGameAction]]&lt;br /&gt;
&lt;br /&gt;
:''Using libkdegames to make your game fit the kdegames standard''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Games/Highscores| Highscores]]&lt;br /&gt;
&lt;br /&gt;
:''Implementing a simple highscore table into your game''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Games/Theme Selector| Theme Selector]]&lt;br /&gt;
&lt;br /&gt;
:''Using the libkdegames theme selection dialog''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Games/Palapeli Patterns| Palapeli Patterns]]&lt;br /&gt;
&lt;br /&gt;
:''Creating a pattern for Palapeli''&lt;br /&gt;
&lt;br /&gt;
=== KGLEngine ===&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Games/kglengine/kglengine-simpleBox| installation and your first KGLItem]]&lt;br /&gt;
&lt;br /&gt;
:''Comenzar tu primera aplicación kglengine''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Games/kglengine/kglengine-motion| item motion]]&lt;br /&gt;
&lt;br /&gt;
:''Como mover kglitem''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Games/kglengine/kglengine-collision| collision detection]]&lt;br /&gt;
&lt;br /&gt;
:''how to detect collision and interact ''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Games/kglengine/kglengine-texture| texture and color]]&lt;br /&gt;
&lt;br /&gt;
:''aplicar texturas y colores a tus elementos''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Games/kglengine/kglengine-effects| particles and shadow effects]]&lt;br /&gt;
&lt;br /&gt;
:''añade algunos efectos agradables '';&lt;br /&gt;
&lt;br /&gt;
[[Development/Tutorials/Games/KGLEngine2d| kglpong]]&lt;br /&gt;
&lt;br /&gt;
:''Now use our knowledge to make a pong''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== KALEngine ===&lt;br /&gt;
;[[Development/Tutorials/Games/KALEngine| Play hello word sound]]&lt;br /&gt;
:''Using KALEngine for games sound development using openAL''&lt;br /&gt;
;[[Development/Tutorials/Games/KALEngine-music| Play music]]&lt;br /&gt;
:''Using KALEngine to play music in a stream''&lt;br /&gt;
&lt;br /&gt;
== Uso de las bibliotecas PIM de KDE ==&lt;br /&gt;
;[[Development/Tutorials/PIM/ical| iCalendar functionality]]&lt;br /&gt;
:''Using kcal to manage iCalendar files''&lt;br /&gt;
&lt;br /&gt;
== Otros tutoriales ==&lt;br /&gt;
&lt;br /&gt;
=== Dibujado de 2D (KPlotWidget) ===&lt;br /&gt;
;[[Development/Tutorials/KPlotWidget|Using the KDE data-plotting widget]]&lt;br /&gt;
:''This tutorial introduces KPlotWidget, which is used for 2-D data plotting.  It includes information on simple usage of the widget (including adding and modifying data sets, and customizing the plot axes and labels), and advanced customization (including extending the widget through sub-classing).''&lt;br /&gt;
&lt;br /&gt;
=== Comprobación de ortografía y gramática (Sonnet) ===&lt;br /&gt;
;[[Development/Tutorials/Sonnet/SonnetTutorial|Adding spell-checking or grammar-checking to KDE applications]]&lt;br /&gt;
:''This tutorial introduces Sonnet and how one may use it to add language correction to your KDE application. Sonnet's auxiliary features shall be described in a separate tutorial.''&lt;br /&gt;
&lt;br /&gt;
=== Cache Pixmap (KPixmapCache) ===&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KPixmapCache|Using the KDE pixmap cache]]&lt;br /&gt;
&lt;br /&gt;
:''This tutorial shows how to use KPixmapCache to cache e.g. pixmaps generated from SVGs or some data.''&lt;br /&gt;
&lt;br /&gt;
=== Uso de  MarbleWidget (Marble) ===&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/MarbleWidget|Using MarbleWidget]]&lt;br /&gt;
&lt;br /&gt;
:''This short tutorial describes how to use the MarbleWidget in your project''&lt;br /&gt;
&lt;br /&gt;
=== Uso de SCM local para el desarrollo en KDE ===&lt;br /&gt;
;[[Development/Git|Using Git to develop for KDE]]&lt;br /&gt;
:''Here you find information on how to use Git to develop for KDE''&lt;br /&gt;
&lt;br /&gt;
=== Implementación de un sensor para KSysGuard ===&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Sensors]]&lt;br /&gt;
&lt;br /&gt;
:''This tutorial shows how to write and KSysGuard sensor and connect it to the systray.''&lt;br /&gt;
&lt;br /&gt;
Runners&lt;br /&gt;
&lt;br /&gt;
== Material para KDE2 y KDE3 ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KDE3|KDE3 Tutorials]]&lt;br /&gt;
:''These tutorials cover topics related to KDE3.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KDE2|KDE2 Tutorials]]&lt;br /&gt;
:''These tutorials cover topics related to KDE2.''&lt;br /&gt;
&lt;br /&gt;
[[Category:KDE4]]&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials</id>
		<title>Development/Tutorials</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials"/>
				<updated>2011-04-28T20:14:30Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Development/Tutorials}}&lt;br /&gt;
&lt;br /&gt;
Tutorials are the fastest way of finding out what KDE will do for you, and how to do it. Here is a list of currently available tutorials '''for KDE4'''. Material for KDE3 and KDE2 is available on the bottom of this page.&lt;br /&gt;
&lt;br /&gt;
== Introduction To KDE 4 Programming ==&lt;br /&gt;
Are you interested in writing applications with KDE 4? This tutorial series is aimed at those completely new to KDE programming.&lt;br /&gt;
;[[Development/Tutorials/First program|Hello World]]&lt;br /&gt;
:''A preliminary introduction to the very basics of KDE4 programming''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using KXmlGuiWindow|Creating the Main Window]]&lt;br /&gt;
:''This tutorial shows you the magic of an application's most important thing: The main window.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using KActions|Using KActions]]&lt;br /&gt;
:''How to add actions to the menus and toolbars.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Saving and loading|Saving and Loading]]&lt;br /&gt;
:''Introduces the KIO library while adding loading and saving support to our application.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KCmdLineArgs|Command line arguments]]&lt;br /&gt;
:''Adds the ability to specify which file to open from the command line to our text editor.''&lt;br /&gt;
&lt;br /&gt;
== Basics ==&lt;br /&gt;
;[[Development/Tutorials/KDE4 Porting Guide|Porting Your Application]]&lt;br /&gt;
:''Help Porting Applications from Qt3/KDE3 to Qt4/KDE4''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/CMake|Introduction to CMake]]&lt;br /&gt;
:''How to use the CMake build system used by KDE4.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Common Programming Mistakes|Common Programming Mistakes]]&lt;br /&gt;
:''Various common mistakes made while developing Qt and KDE applications and how to avoid them.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Debugging Linker Errors|Debugging Linker Errors]]&lt;br /&gt;
:'How to understand and debug errors from the linker, at compile time.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using Qt Designer|Using Qt Designer to build user interfaces]]&lt;br /&gt;
:''How to create UI files with designer, and how to integrate them into a KDE program.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using Qt Creator|Using Qt Creator to develop your KDE program]]&lt;br /&gt;
:''How to integrate Qt Creator use into KDE development.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Creating Libraries|Creating Libraries to share code]]&lt;br /&gt;
:''How to add the library to the buildsystem and how to prepare the source code.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Session_Management|Session Management]]&lt;br /&gt;
:''Make your application aware of X sessions''&lt;br /&gt;
&lt;br /&gt;
== Testing And Debugging ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Debugging|Debugging your application]]&lt;br /&gt;
:''Tips, tools and techniques to apply when debugging your KDE application''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Unittests|Writing Unittests for Qt4 and KDE4 with QTestLib]] ([http://developer.kde.org/documentation/tutorials/writingunittests/writingunittests.html Original link])&lt;br /&gt;
:''Tutorial by [mailto:bradh@frogmouth.net Brad Hards] that describes how to write unit tests using the QTestLib framework. It is presented as an example based tutorial, and is still under development.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Code_Checking|Semi-automatic ways to detect code errors]]&lt;br /&gt;
:''Techniques you can use to detect errors in KDE code''&lt;br /&gt;
&lt;br /&gt;
== Managing Configuration Data With KConfig ==&lt;br /&gt;
;[[Development/Tutorials/KConfig|Introduction To KConfig]]&lt;br /&gt;
:''An overview of the KConfig classes and how to use them in your application code''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using KConfig XT|Using KConfig XT]]&lt;br /&gt;
:''Tutorial on how to efficiently use the KConfig XT framework.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Updating KConfig Files|Updating KConfig Files]]&lt;br /&gt;
:''Tutorial on how to write an update script to keep changes in your application's config file format in sync with the user's already existing config file''&lt;br /&gt;
&lt;br /&gt;
== Services: Applications and Plugins ==&lt;br /&gt;
;[[Development/Tutorials/Services/Introduction|Introduction to the Services Framework]]&lt;br /&gt;
:''An overview of the services framework in KDE and what it provides the application developer. Covers the system configuration cache (SyCoCa), the source data files and what the indexed information can be used for.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Services/Traders|Finding Services Using Trader Queries]]&lt;br /&gt;
:''How to find services, such as plugins or mimetypes, that are indexed in the SyCoCa using Trader Query Syntax''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Services/Plugins|Creating and Loading Plugins Using KService]]&lt;br /&gt;
:''Learn how to define custom plugin types, find installed plugins (including 3rd party plugins) and load them in an easy and portable fashion using KService.''&lt;br /&gt;
&lt;br /&gt;
== Localization ==&lt;br /&gt;
See also [[Localization|Localization portal]].&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Localization/Unicode|Introduction To Unicode]]&lt;br /&gt;
:''An introduction to what Unicode is as well as how to handle Unicode data in KDE applications.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n|Writing Applications With Localization In Mind]]&lt;br /&gt;
:''This tutorial covers what localization is, why it's important and how to ensure your application is ready to be localized. A must read for all application developers.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Mistakes|Avoiding Common Localization Pitfalls]]&lt;br /&gt;
:''There are several common mistakes that prevent applications from being properly localized. Find out what they are and how to easily avoid them in this tutorial.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/Building KDE's l10n Module|Building KDE's Localization Module]]&lt;br /&gt;
:''Building and installing language support from KDE's localization (l10n) module is a good idea for those working on applications in the main KDE repository. Doing so will allow you to test your application in another language and spot problem areas. Learn how to do just that in this tutorial.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Build Systems|Incorporating i18n Into the Build System]]&lt;br /&gt;
:''Once your application is ready to be localized, the next step is to ensure that translation files are built automatically and kept up to date. This tutorial covers the necessary CMakeFiles.txt additions as well the process of distributing the resulting message catalogs with your application.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Challenges|Common i18n Challenges and Solutions]]&lt;br /&gt;
:''This tutorial covers challenges that you may eventually run into such as translating handbooks and other data that exists outside of the source code, merging and handling obsolete .po files, dealing with freezes, coding in languages other than English and creating independent releases of or moving applications between KDE modules.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n_Semantics|Semantic Markup of Messages]]&lt;br /&gt;
:''To ensure consistent presentation and more meaningful representations of messages in applications, semantic markup can be applied to messages marked for translation using the KUIT system. This tutorial describes how this system works.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Krazy|Automated i18n Code Checking]]&lt;br /&gt;
:''The Krazy code checker scans KDE's code and reports common i18n mistakes.''&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/API_Documentation|API Documentation]]&lt;br /&gt;
:''This tutorial explains how to document your APIs properly.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Man_Pages|Man Pages]]&lt;br /&gt;
:''Writing and Generating Reference Manual Pages.''&lt;br /&gt;
&lt;br /&gt;
;Source Code&lt;br /&gt;
: http://websvn.kde.org&lt;br /&gt;
&lt;br /&gt;
== Accessibility ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Accessibility|Accessibility]]&lt;br /&gt;
:''This tutorial will explain how to make your application accessible.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Text-To-Speech|Text-To-Speech]]&lt;br /&gt;
:''How to utilize Jovie text-to-speech service in your application.''&lt;br /&gt;
&lt;br /&gt;
== Application Automation and Scripting ==&lt;br /&gt;
&lt;br /&gt;
=== D-Bus ===&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Introduction|Introduction to D-Bus]]&lt;br /&gt;
:''A straight-forward introduction to the core concepts in D-Bus from an application developer's perspective, this tutorial covers what D-Bus is and how it can be used by applications.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Accessing Interfaces|Accessing D-Bus Interfaces]]&lt;br /&gt;
:''A step-by-step guide to calling D-Bus methods and connecting to D-Bus signals using QtDBus.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Intermediate_D-Bus|Intermediate D-Bus]]&lt;br /&gt;
:''Tips to make use of QtDBus when faced with problematic real-world interfaces.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Creating Interfaces|Creating D-Bus Interfaces]]&lt;br /&gt;
:''Learn how to expose functionality in your application by creating and using custom D-Bus interfaces. Covers generating the XML descriptions, instantiating interfaces at run time and setting up the build system with CMake.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/CustomTypes|Using Custom Types with D-Bus]]: ''Learn how to use your own types in classes exported on D-Bus. Covers marhaling and unmarshaling of objects, the integration of custom types into XML descriptions and registering the custom types with the Qt Meta Object system.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Autostart Services|D-Bus Autostart Services]]&lt;br /&gt;
:''Turn your application into a D-Bus autostart service with this tutorial. This D-Bus feature, also known as &amp;quot;D-Bus service activation&amp;quot;, will ensure that even when your application isn't running that D-Bus calls made to it will work by relying on the D-Bus daemon itself to start your app if and when needed.''&lt;br /&gt;
; [[Development/Tutorials/Porting_to_D-Bus|Porting from DCOP to D-Bus]]&lt;br /&gt;
: ''Port your applications from DCOP to D-Bus with this handy guide.''&lt;br /&gt;
&lt;br /&gt;
=== Konqueror ===&lt;br /&gt;
; [[Development/Tutorials/Creating Konqueror Service Menus|Creating Konqueror Service Menus]]&lt;br /&gt;
:''This tutorial shows you how to create mimetype-specific actions in Konqueror's context menu (aka &amp;quot;servicemenus&amp;quot;).''&lt;br /&gt;
&lt;br /&gt;
=== Kross ===&lt;br /&gt;
; [[Development/Tutorials/Kross/Introduction|Introduction to Kross]]&lt;br /&gt;
:''An introduction to the Kross Scripting Framework.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Hello_World|Hello World]]&lt;br /&gt;
:''A first application with working kross code.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Call_Functions_in_Kross|Calling Functions in Kross]]&lt;br /&gt;
:''Simple demonstration of calling scripting functions''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Connecting_Signals_and_slots_in_Kross|Connecting Signals and Slots in Kross]]&lt;br /&gt;
:''Simple demonstration of connecting object signals with script slots''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Scripts-as-Plugins|Scripts as Plugins with Kross]]&lt;br /&gt;
:''This tutorial provides a step-by-step introduction how to integrate scripts as plugins into a KDE application.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Script-Actions|Placing script actions in your application menus ]]&lt;br /&gt;
:''Simple demonstration on how to extend you application menus to execute script files.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/ActionCollections|How to use an ActionCollection ]]&lt;br /&gt;
:''A small Tutorial on How to use Kross::ActionCollections.''&lt;br /&gt;
{{:KOffice/Plugin Tutorials}}&lt;br /&gt;
&lt;br /&gt;
=== SuperKaramba ===&lt;br /&gt;
; [[Development/Tutorials/SuperKaramba|SuperKaramba Tutorial]]&lt;br /&gt;
:''This tutorial provides an overview of SuperKaramba, theme files and scripting with Python, Ruby and JavaScript.''&lt;br /&gt;
&lt;br /&gt;
=== System Activity ===&lt;br /&gt;
&lt;br /&gt;
: [[Development/Tutorials/SystemActivity/Scripting|Writing script actions for the process's context menu]]&lt;br /&gt;
:''This tutorial shows how to add a context menu action to show custom information about a process.&lt;br /&gt;
&lt;br /&gt;
== Plugins and KParts ==&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Writing kontact plugins|Writing kontact plugins]]:''Kontact plugins are KParts. This tutorial describes how you can write one.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Using KParts|Using KParts]]:''Learn how to load a KPart into an application window.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Writing Qt Designer Plugins|Writing Qt Designer Plugins]]:''Add your widgets to Qt Designer and thus make them usable in UI files.''&lt;br /&gt;
&lt;br /&gt;
== Search and Metadata ==&lt;br /&gt;
&lt;br /&gt;
=== Strigi ===&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Writing file analyzers|Writing file analyzers]]&lt;br /&gt;
:''File analyzers extract data from files to display in the file dialogs and file managers. The data gathered this way is also used to search for files. KDE4 allows the use of multiple analyzers per file type. This tutorial describes how you can write new analyzers.''&lt;br /&gt;
&lt;br /&gt;
=== [http://nepomuk.kde.org Nepomuk] ===&lt;br /&gt;
&lt;br /&gt;
See [[Development/Tutorials/Metadata/Nepomuk|Nepomuk tutorials]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hardware Awareness (Solid) ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Solid_Tutorials|Introduction to Solid]]&lt;br /&gt;
:''An introduction to using the Solid hardware discovery and interaction system in KDE applications.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Solid_Network_Tutorial|Accessing Network Information]]&lt;br /&gt;
:''How to use the Solid system to get information about the network''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Solid_Device_Actions|Creating a Device Action]]&lt;br /&gt;
:''When your application is interested in registering actions with the system for removable hardware''&lt;br /&gt;
&lt;br /&gt;
== Authorization and Privilege escalation (KAuth) ==&lt;br /&gt;
; [[Development/Tutorials/KAuth/KAuth_Basics|KAuth Basics]]&lt;br /&gt;
:''An overview of concepts and basic knowledge required to understand and use KAuth effectively''&lt;br /&gt;
; [[Development/Tutorials/KAuth/KAuth_Actions|Using KAuth actions in your application]]&lt;br /&gt;
:''How to execute KAuth actions in your application, and how to integrate them tightly into your UI''&lt;br /&gt;
; [[Development/Tutorials/KAuth/Helper_HowTo|Creating a KAuth helper to perform a privileged action]]&lt;br /&gt;
:''You will learn how to use KAuth's helpers and escalation facilities, and how to seamlessly make a privileged and non privileged portion of your application interact''&lt;br /&gt;
; [[Development/Tutorials/KAuth/KCM_HowTo|Creating a KCM requiring authorization upon saving]]&lt;br /&gt;
:''Learn how to use the high level KCModule API to create KCModules handling authorization, and its UI integration, on their own''&lt;br /&gt;
&lt;br /&gt;
== Multimedia (Phonon) ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Phonon/Introduction|Phonon]]&lt;br /&gt;
:''How to start with the multimedia API''&lt;br /&gt;
&lt;br /&gt;
:''How to compile and use Phonon and its GStreamer backend on Linux using Qt 4.3.x''&lt;br /&gt;
::''This article gives you a quick brief of how you can use checkout, compile Phonon and its GStreamer backend on GNU/Linux with just Qt 4.3.x. Towards the end, the article also describes how a developer can make use of Phonon to create simple audio and video players. You can read the article [http://www.vcreatelogic.com/oss/docs/CompilingPhononOnLinux.pdf here]. You can download the editable OpenDocumentText file from [http://www.prashanthudupa.com/phonon/CompilingPhononOnLinux.odt here].''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Phonon/Backends|Writing Backends]]&lt;br /&gt;
:''How to start creating a new backend for the multimedia API''&lt;br /&gt;
&lt;br /&gt;
;Resources&lt;br /&gt;
:''Please have a look at the [http://api.kde.org/kdesupport-api/kdesupport-apidocs/phonon-git/html/ online documentation] for information on the Phonon API. If you prefer using Qt Assistant or Qt Creator you can also use our [http://mts.ms/phonon-4.4.2.qch offline documentation].''&lt;br /&gt;
&lt;br /&gt;
== Plasma ==&lt;br /&gt;
&lt;br /&gt;
See [[Development/Tutorials/Plasma|Plasma tutorials]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Personal Information Management (Akonadi) ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Akonadi/Application|Using Akonadi in Applications]]&lt;br /&gt;
:''Displaying and modifying data provided by Akonadi''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Akonadi/Resources|Developing Akonadi Resources]]&lt;br /&gt;
:''Akonadi Resources are agent programs which transport PIM data between Akonadi and a backend (files, servers, etc)''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Akonadi/SerializerPlugin|Using custom data types with Akonadi]]&lt;br /&gt;
:''Akonadi can handle arbitrary data as item payloads through the use of a plugin based serialization framework''&lt;br /&gt;
&lt;br /&gt;
;[[Development/AkonadiPorting|Porting Applications which use KResource API]]&lt;br /&gt;
:''Applications using KDE's now deprecated KResource APIs, e.g. KABC or KCal, need to be ported to use their Akonadi equivalents''&lt;br /&gt;
&lt;br /&gt;
== Kate / Kwrite ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Kate/KTextEditor Plugins|Getting started with KTextEditor plugins]]&lt;br /&gt;
:''Creating your first KTextEditor plugin''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Kate/KTextEditor_Plugins_Advanced|Developing a plugin with configuration dialog]]&lt;br /&gt;
:''Adding a configuration dialog to the Time &amp;amp; Date example''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Kate/KTextEditor_Example|A small Editor]]&lt;br /&gt;
:''Create a small application using KTextEditor''&lt;br /&gt;
&lt;br /&gt;
== KDevelop ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/KDevelop-PG-Qt_Introduction|KDevelop-PG-Qt Introduction]]&lt;br /&gt;
:''Information on the KDevelop parser generator, useful for language plugins.''&lt;br /&gt;
&lt;br /&gt;
==Printing==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Printing Hello World|Hello World]]&lt;br /&gt;
:''Introduction to the KDE printing system''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Printing Print Dialog|Print Dialog]]&lt;br /&gt;
:''Using the KDE print dialog''&lt;br /&gt;
&lt;br /&gt;
== kioslaves ==&lt;br /&gt;
* [[Development/Tutorials/KIO Slaves/Using KIO Slaves in your Program|Using kioslaves in your Program]]&lt;br /&gt;
* [[Development/Tutorials/KIO Slaves/Hello World|Creating a Hello-World kioslave]]&lt;br /&gt;
&lt;br /&gt;
== Collaboration ==&lt;br /&gt;
&lt;br /&gt;
=== Open Collaboration Services (libattica) ===&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Collaboration/Attica/Introduction|Introduction to Attica]]&lt;br /&gt;
:''In this tutorial a simple widget showing information about a Person on the server is created.''&lt;br /&gt;
&lt;br /&gt;
=== Get Hot New Stuff  ===&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Collaboration/HotNewStuff/Introduction|Get Hot New Stuff 3 - Download]] &lt;br /&gt;
:''How to use KHotNewStuff3 in your application.''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Collaboration/HotNewStuff/Updates|Get Hot New Stuff 3 - Checking for Updates]] &lt;br /&gt;
:''How to check if updates for installed stuff are available without showing the dialog/widget.''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Collaboration/HotNewStuff/Upload|Get Hot New Stuff 3 - Upload]] &lt;br /&gt;
:''How to add an upload dialog to your application.''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Old links for KNS2 and KNS1 content:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/K Hot New Stuff2|Introduction to Get Hot New Stuff 2]] &lt;br /&gt;
:''A short tutorial about how to use KHotNewStuff2 in your application. Deprecated, use version 3'' &lt;br /&gt;
;[[Development/Tutorials/Introduction to Get Hot New Stuff|Introduction to Get Hot New Stuff]] &lt;br /&gt;
:''An introduction to the developer-friendly network update system that allows KDE applications to fetch new application data at runtime in a user friendly manner.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KNewStuffSecure|KNewStuff Secure]] ([http://developer.kde.org/documentation/tutorials/knewstuffsecure/index.html Original Link]) &lt;br /&gt;
:''Tutorial showing how to share resources in a secured way (KDE 3.4 and later).'' By András Mantia &amp;amp;lt;amantia@kde.org&amp;amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Goya ==&lt;br /&gt;
; [[Development/Tutorials/Introduction to Goya usage|Introduction to Goya usage]]&lt;br /&gt;
:''An introduction for the Goya subsystem usage, which allows you to easily add widgets to your itemviews and connect their signals to your code, as they were real widgets.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Introduction to Goya usage 2|Introduction to Goya usage (part 2)]]&lt;br /&gt;
:''The second part of the tutorial, with a slightly more complex example than the first part.''&lt;br /&gt;
&lt;br /&gt;
== Other programming languages ==&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
;[http://www.learningpython.com/2008/09/20/an-introduction-to-pyqt/ An Introduction to PyQt]&lt;br /&gt;
:''Starting off''&lt;br /&gt;
&lt;br /&gt;
;[http://lateral.netmanagers.com.ar/stories/BBS47.html PyQt by Example]&lt;br /&gt;
:''Another introduction to PyQt''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Languages/Python/PyKDE_WebKit_Tutorial|PyKDE WebKit Tutorial]]&lt;br /&gt;
:''A simple web browser application in PyKDE''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Python introduction to signals and slots|101 Introduction to signals and slots]]&lt;br /&gt;
:''A simple introduction to Qt's signal and slot architecture.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Languages/Python/PyKDE_DBus_Tutorial|PyKDE DBus Tutorial]]&lt;br /&gt;
:''An introduction to DBus communication using PyKDE''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Languages/Python/PyKDE_Knotify_Tutorial|PyKDE KNotify Tutorial]]&lt;br /&gt;
:''An introduction to Knotify (Notifications and KJobs) using PyKDE''&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
;[http://developer.kde.org/language-bindings/ruby/kde3tutorial/index.html KDE Ruby Korundum tutorial]&lt;br /&gt;
:''A ruby version of Antonio Larrosa Jim&amp;amp;eacute;nez's KDE tutorial by Richard Dale. See the [[Development/Languages/Ruby|Ruby Developers Corner]] for Qt tutorials and other info.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Qt4_Ruby_Tutorial|Qt4 Ruby Tutorial]]&lt;br /&gt;
:''Nokia's fabulous introductory tutorial to Qt, translated to Ruby.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Plasma/RubyApplet|Creating a Plasma Widget in Ruby]]&lt;br /&gt;
:''Tutorial that shows how to create your first Plasma Applet using the Ruby language.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Developing_Qt4_Applications_using_Qt_Designer_and_Ruby_on_Kubuntu|Developing Qt4 Applications using Qt Designer and Ruby on Kubuntu]]&lt;br /&gt;
:''Tutorial that shows how to design a simple User Interface in Qt Designer and then use the resulting widget in a Qt Ruby application we build from scratch.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Languages/Ruby/Ruby-Qt/KDE_Book|Ruby-Qt/KDE Book]]&lt;br /&gt;
:''There is also an approach to create an Ruby-Qt/KDE Book under a free license. The content will be created in this wiki.''&lt;br /&gt;
&lt;br /&gt;
=== Shell ===&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Shell_Scripting_with_KDE_Dialogs|Shell Scripting with KDE dialogs]] ([http://developer.kde.org/documentation/tutorials/kdialog/t1.html Original Link]) &lt;br /&gt;
:''Tutorial by [mailto:bradh@frogmouth.net Brad Hards] that describes how to use KDE dialogs in shell scripts with kdialog. It is presented as an example based tutorial.''&lt;br /&gt;
&lt;br /&gt;
== Graphics Programming ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Graphics/Performance|QPainter Perfomance]]&lt;br /&gt;
:''Hints on avoiding common mistakes leading to poor performance when using QPainter''&lt;br /&gt;
&lt;br /&gt;
== Using the KDE Games Libraries ==&lt;br /&gt;
;[[Development/Tutorials/Games/KStandardGameAction| KStandardGameAction]]&lt;br /&gt;
:''Using libkdegames to make your game fit the kdegames standard''&lt;br /&gt;
;[[Development/Tutorials/Games/Highscores| Highscores]]&lt;br /&gt;
:''Implementing a simple highscore table into your game''&lt;br /&gt;
;[[Development/Tutorials/Games/Theme Selector| Theme Selector]]&lt;br /&gt;
:''Using the libkdegames theme selection dialog''&lt;br /&gt;
;[[Development/Tutorials/Games/Palapeli Patterns| Palapeli Slicers]]&lt;br /&gt;
:''Creating a slicer plugin for Palapeli''&lt;br /&gt;
&lt;br /&gt;
=== KGLEngine ===&lt;br /&gt;
;[[Development/Tutorials/Games/kglengine/kglengine-simpleBox| installation and your first KGLItem]]&lt;br /&gt;
:''start your first kglengine application''&lt;br /&gt;
;[[Development/Tutorials/Games/KGLEngine2d| kglpong]]&lt;br /&gt;
:''Now use our knowledge to make a pong''&lt;br /&gt;
&lt;br /&gt;
=== KALEngine ===&lt;br /&gt;
;[[Development/Tutorials/Games/KALEngine| Play hello word sound]]&lt;br /&gt;
:''Using KALEngine for games sound development using openAL''&lt;br /&gt;
;[[Development/Tutorials/Games/KALEngine-music| Play music]]&lt;br /&gt;
:''Using KALEngine to play music in a stream''&lt;br /&gt;
&lt;br /&gt;
== Using the KDE PIM Libraries ==&lt;br /&gt;
;[[Development/Tutorials/PIM/ical| iCalendar functionality]]&lt;br /&gt;
:''Using kcal to manage iCalendar files''&lt;br /&gt;
&lt;br /&gt;
== Other tutorials ==&lt;br /&gt;
&lt;br /&gt;
=== 2D Plotting (KPlotWidget) ===&lt;br /&gt;
;[[Development/Tutorials/KPlotWidget|Using the KDE data-plotting widget]]&lt;br /&gt;
:''This tutorial introduces KPlotWidget, which is used for 2-D data plotting.  It includes information on simple usage of the widget (including adding and modifying data sets, and customizing the plot axes and labels), and advanced customization (including extending the widget through sub-classing).''&lt;br /&gt;
&lt;br /&gt;
=== Spelling and Grammar Checking (Sonnet) ===&lt;br /&gt;
;[[Development/Tutorials/Sonnet/SonnetTutorial|Adding spell-checking or grammar-checking to KDE applications]]&lt;br /&gt;
:''This tutorial introduces Sonnet and how one may use it to add language correction to your KDE application. Sonnet's auxiliary features shall be described in a separate tutorial.''&lt;br /&gt;
&lt;br /&gt;
=== Pixmap cache (KPixmapCache) ===&lt;br /&gt;
;[[Development/Tutorials/KPixmapCache|Using the KDE pixmap cache]]&lt;br /&gt;
:''This tutorial shows how to use KPixmapCache to cache e.g. pixmaps generated from SVGs or some data.''&lt;br /&gt;
&lt;br /&gt;
=== Using MarbleWidget (Marble) ===&lt;br /&gt;
;[[Development/Tutorials/MarbleWidget|Using MarbleWidget]]&lt;br /&gt;
:''This short tutorial describes how to use the MarbleWidget in your project''&lt;br /&gt;
&lt;br /&gt;
=== Using local SCM for KDE development ===&lt;br /&gt;
;[[Development/Git|Using Git to develop for KDE]]&lt;br /&gt;
:''Here you find how to use Git to develop for KDE''&lt;br /&gt;
&lt;br /&gt;
=== Kwin effect tutorial (blog) ===&lt;br /&gt;
;[http://blog.martin-graesslin.com/blog/?p=258 blog by Martin Graesslin]&lt;br /&gt;
:''This tutorial guides you through the development of a simple KWin effect''&lt;br /&gt;
&lt;br /&gt;
=== Implementing KSysGuard sensors and adding them ===&lt;br /&gt;
;[[Development/Tutorials/Sensors]]&lt;br /&gt;
:''This tutorial shows how to write and KSysGuard sensor and connect it to the systray.''&lt;br /&gt;
Runners&lt;br /&gt;
&lt;br /&gt;
=== Porting an application from KSystemTrayIcon to KStatusNotifierItem ===&lt;br /&gt;
;[[Development/Tutorials/PortToKStatusNotifierItem]]&lt;br /&gt;
:''This tutorials shows how to port an application using KSystemTrayIcon to KStatusNotifierItem''&lt;br /&gt;
&lt;br /&gt;
=== Using the KDE Wallet API for safe storage ===&lt;br /&gt;
;[[Development/Tutorials/KWallet]]&lt;br /&gt;
:&amp;quot;Brief introduction to the KWallet API which can be used for storing all kinds of sensitive information.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== KDE2 and KDE3 Materials ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KDE3|KDE3 Tutorials]]&lt;br /&gt;
:''These tutorials cover topics related to KDE3.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KDE2|KDE2 Tutorials]]&lt;br /&gt;
:''These tutorials cover topics related to KDE2.''&lt;br /&gt;
&lt;br /&gt;
[[Category:KDE4]]&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git</id>
		<title>Development/Git</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git"/>
				<updated>2011-04-28T20:13:10Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: /* Documentation Changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the hub page for all information about the use of Git by KDE.&lt;br /&gt;
&lt;br /&gt;
This page is a work in progress where all new Git material is being organised.  Most of these sections will eventually be moved to their own pages.  Feel free to add stuff.&lt;br /&gt;
&lt;br /&gt;
== KDE and Git ==&lt;br /&gt;
&lt;br /&gt;
This section provides details on using the KDE Git infrastructure.&lt;br /&gt;
&lt;br /&gt;
A primary resource is still http://community.kde.org/Sysadmin/GitKdeOrgManual&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Configuration ===&lt;br /&gt;
&lt;br /&gt;
How to configure Git for use with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
Please see the [[/Configuration|Git Configuration]] page.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Policies ===&lt;br /&gt;
&lt;br /&gt;
KDE policies on Git.  More generic development policies go elsewhere.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Recipes ===&lt;br /&gt;
&lt;br /&gt;
Short recipes for using Git with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
Please see the [[/Recipes|Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Tutorials ===&lt;br /&gt;
&lt;br /&gt;
More in-depth instructions in using Git.&lt;br /&gt;
&lt;br /&gt;
Please see the outdated [[Development/Tutorials/Git|KDE tutorial]] page which needs major revision.&lt;br /&gt;
&lt;br /&gt;
== External Git Resources ==&lt;br /&gt;
&lt;br /&gt;
Links to useful external sites about Git&lt;br /&gt;
&lt;br /&gt;
=== Official Documentation ===&lt;br /&gt;
&lt;br /&gt;
* http://git-scm.com/documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Git for SVN Users ===&lt;br /&gt;
&lt;br /&gt;
* http://git-scm.com/course/svn.html&lt;br /&gt;
* https://git.wiki.kernel.org/index.php/GitSvnCrashCourse&lt;br /&gt;
&lt;br /&gt;
=== Git books ===&lt;br /&gt;
&lt;br /&gt;
* [http://progit.org/book/ Pro Git] - An easy to understand book on git (CC licensed).&lt;br /&gt;
* [http://book.git-scm.com/ The git community book], also as [http://book.git-scm.com/book.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
=== Tutorials ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html The official tutorial introduction to Git]&lt;br /&gt;
* [http://www-cs-students.stanford.edu/~blynn/gitmagic/ Git Magic] - A good intro to git (in several languages!) &lt;br /&gt;
*[http://tom.preston-werner.com/2009/05/19/the-git-parable.html The Git Parable] - Essential reading if you want to truly understand git.&lt;br /&gt;
&lt;br /&gt;
=== Cheat Sheets ===&lt;br /&gt;
&lt;br /&gt;
* [http://cheat.errtheblog.com/s/git Quick reference]&lt;br /&gt;
* [http://zrusin.blogspot.com/2007/09/git-cheat-sheet.html Illustrated git cheat sheet]&lt;br /&gt;
&lt;br /&gt;
= Documentation Changes =&lt;br /&gt;
&lt;br /&gt;
== KDE Documentation Review ==&lt;br /&gt;
&lt;br /&gt;
=== Existing Pages For Review ===&lt;br /&gt;
&lt;br /&gt;
Existing KDE pages about Git, SVN, and/or buildinga KDE that need to be revised.  When revising pages try to split the generic development and revision control policies separate from Git specific stuff.  Do not refer to &amp;quot;the KDE Git Repository&amp;quot; but instead the &amp;quot;KDE Code Repository&amp;quot;.  Lots of small simple pages that are less daunting to newbies and can be linked to from multiple locations are preferred to massive walls of text.&lt;br /&gt;
&lt;br /&gt;
Keep:&lt;br /&gt;
* [[Development/Tutorials/Git/Basics]]&lt;br /&gt;
* [[Development/Tutorials/Git/git-svn]]&lt;br /&gt;
* [[Development/Tutorials/Git/kde-qt]]&lt;br /&gt;
* [[Getting Started/Sources/Amarok Git Tutorial]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On community.kde.org:&lt;br /&gt;
* http://community.kde.org/Sysadmin/GitKdeOrgManual&lt;br /&gt;
* http://community.kde.org/20110213_GitWorkflowAgenda&lt;br /&gt;
* http://community.kde.org/20110213_GitWorkflowAgenda/StevesIdea&lt;br /&gt;
&lt;br /&gt;
On techbase.kde.org:&lt;br /&gt;
* [[Getting Started]]&lt;br /&gt;
* [[Getting Started/Build/KDE4]]&lt;br /&gt;
* [[Getting Started/Build/KDE4.x]]&lt;br /&gt;
* [[Getting Started/Build/KDE4/Prerequisites]]&lt;br /&gt;
* [[Getting Started/Build/KDE4/Windows/subversion]]&lt;br /&gt;
* [[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts]]&lt;br /&gt;
* [[Getting_Started/Build/kdesrc-build]]&lt;br /&gt;
* [[Getting Started/Sources/Anonymous SVN]]&lt;br /&gt;
* [[Getting_Started/Sources/Using_Subversion_with_KDE]]&lt;br /&gt;
* [[Getting_Started/Set_up_KDE_4_for_development]]&lt;br /&gt;
* [[Getting_Started/Using_an_IDE_with_KDE4]]&lt;br /&gt;
* [[Policies/SVN_Commit_Policy]]&lt;br /&gt;
* [[Policies/SVN_Guidelines]]&lt;br /&gt;
* [[Development/Tools]]&lt;br /&gt;
* [[Development/Tutorials/Git/BestPractices]]&lt;br /&gt;
* [[Development/Tutorials/Git/Intermediate]]&lt;br /&gt;
* [[Development/Tutorials/Git/Recipes]]&lt;br /&gt;
* [[Development/Tutorials/Git/Create a patch]]&lt;br /&gt;
* [[Development/Tutorials/Git/decoding-git]]&lt;br /&gt;
* [[Projects/rekonq/Git_with_rekonq_HowTo]]&lt;br /&gt;
* [[Projects/Related/Subversion]]&lt;br /&gt;
* [[Projects/MoveToGit/StepsToMove]]&lt;br /&gt;
* [[Contribute/Get a SVN Account]]&lt;br /&gt;
* [[Contribute/First Steps with your KDE SVN Account]]&lt;br /&gt;
&lt;br /&gt;
There are also numerous other pages referring to &amp;quot;the KDE SVN/subversion repositories&amp;quot; which should be replaced with the generic &amp;quot;KDE code repositories&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
There are also numerous translated pages which will need to be updated once the original pages are completed.&lt;br /&gt;
&lt;br /&gt;
=== New Page Structure ===&lt;br /&gt;
&lt;br /&gt;
* [[Getting_Started]]&lt;br /&gt;
* [[Getting_Started/Build]]&lt;br /&gt;
* [[Getting_Started/Build/Environment]]&lt;br /&gt;
* [[Getting_Started/Build/Requirements]]&lt;br /&gt;
* [[Getting_Started/Build/Qt]]&lt;br /&gt;
* [[Getting_Started/Build/KdeSupport]]&lt;br /&gt;
* [[Getting_Started/Build/Windows]]&lt;br /&gt;
* [[Getting_Started/Build/Mac_OS_X]]&lt;br /&gt;
* [[Getting_Started/Run]]&lt;br /&gt;
* [[Getting_Started/Run/Shell]]&lt;br /&gt;
* [[Getting_Started/Run/Nested_Session]]&lt;br /&gt;
* [[Getting_Started/Run/Full_Session]]&lt;br /&gt;
&lt;br /&gt;
=== For Deletion ===&lt;br /&gt;
&lt;br /&gt;
The following pages can now be deleted and/or redirected:&lt;br /&gt;
* [[Development/Tutorials/Git]]&lt;br /&gt;
* [[Development/Tutorials/Git/KdeOnGit]]&lt;br /&gt;
* [[Development/Tutorials/Git/Pushing]]&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Archive:Development/Tutorials/Git</id>
		<title>Archive:Development/Tutorials/Git</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Archive:Development/Tutorials/Git"/>
				<updated>2011-04-28T20:12:08Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: Deleted as discussed on k-c-d.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{warning| This page is obsolete. Proceed to [[Development/Git]].}}&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git</id>
		<title>Development/Git</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git"/>
				<updated>2011-04-28T20:10:09Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: /* External Git Resources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the hub page for all information about the use of Git by KDE.&lt;br /&gt;
&lt;br /&gt;
This page is a work in progress where all new Git material is being organised.  Most of these sections will eventually be moved to their own pages.  Feel free to add stuff.&lt;br /&gt;
&lt;br /&gt;
== KDE and Git ==&lt;br /&gt;
&lt;br /&gt;
This section provides details on using the KDE Git infrastructure.&lt;br /&gt;
&lt;br /&gt;
A primary resource is still http://community.kde.org/Sysadmin/GitKdeOrgManual&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Configuration ===&lt;br /&gt;
&lt;br /&gt;
How to configure Git for use with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
Please see the [[/Configuration|Git Configuration]] page.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Policies ===&lt;br /&gt;
&lt;br /&gt;
KDE policies on Git.  More generic development policies go elsewhere.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Recipes ===&lt;br /&gt;
&lt;br /&gt;
Short recipes for using Git with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
Please see the [[/Recipes|Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Tutorials ===&lt;br /&gt;
&lt;br /&gt;
More in-depth instructions in using Git.&lt;br /&gt;
&lt;br /&gt;
Please see the outdated [[Development/Tutorials/Git|KDE tutorial]] page which needs major revision.&lt;br /&gt;
&lt;br /&gt;
== External Git Resources ==&lt;br /&gt;
&lt;br /&gt;
Links to useful external sites about Git&lt;br /&gt;
&lt;br /&gt;
=== Official Documentation ===&lt;br /&gt;
&lt;br /&gt;
* http://git-scm.com/documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Git for SVN Users ===&lt;br /&gt;
&lt;br /&gt;
* http://git-scm.com/course/svn.html&lt;br /&gt;
* https://git.wiki.kernel.org/index.php/GitSvnCrashCourse&lt;br /&gt;
&lt;br /&gt;
=== Git books ===&lt;br /&gt;
&lt;br /&gt;
* [http://progit.org/book/ Pro Git] - An easy to understand book on git (CC licensed).&lt;br /&gt;
* [http://book.git-scm.com/ The git community book], also as [http://book.git-scm.com/book.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
=== Tutorials ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html The official tutorial introduction to Git]&lt;br /&gt;
* [http://www-cs-students.stanford.edu/~blynn/gitmagic/ Git Magic] - A good intro to git (in several languages!) &lt;br /&gt;
*[http://tom.preston-werner.com/2009/05/19/the-git-parable.html The Git Parable] - Essential reading if you want to truly understand git.&lt;br /&gt;
&lt;br /&gt;
=== Cheat Sheets ===&lt;br /&gt;
&lt;br /&gt;
* [http://cheat.errtheblog.com/s/git Quick reference]&lt;br /&gt;
* [http://zrusin.blogspot.com/2007/09/git-cheat-sheet.html Illustrated git cheat sheet]&lt;br /&gt;
&lt;br /&gt;
= Documentation Changes =&lt;br /&gt;
&lt;br /&gt;
== KDE Documentation Review ==&lt;br /&gt;
&lt;br /&gt;
=== Existing Pages For Review ===&lt;br /&gt;
&lt;br /&gt;
Existing KDE pages about Git, SVN, and/or buildinga KDE that need to be revised.  When revising pages try to split the generic development and revision control policies separate from Git specific stuff.  Do not refer to &amp;quot;the KDE Git Repository&amp;quot; but instead the &amp;quot;KDE Code Repository&amp;quot;.  Lots of small simple pages that are less daunting to newbies and can be linked to from multiple locations are preferred to massive walls of text.&lt;br /&gt;
&lt;br /&gt;
Keep:&lt;br /&gt;
* [[Development/Tutorials/Git/Basics]]&lt;br /&gt;
* [[Development/Tutorials/Git/git-svn]]&lt;br /&gt;
* [[Development/Tutorials/Git/kde-qt]]&lt;br /&gt;
* [[Getting Started/Sources/Amarok Git Tutorial]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On community.kde.org:&lt;br /&gt;
* http://community.kde.org/Sysadmin/GitKdeOrgManual&lt;br /&gt;
* http://community.kde.org/20110213_GitWorkflowAgenda&lt;br /&gt;
* http://community.kde.org/20110213_GitWorkflowAgenda/StevesIdea&lt;br /&gt;
&lt;br /&gt;
On techbase.kde.org:&lt;br /&gt;
* [[Getting Started]]&lt;br /&gt;
* [[Getting Started/Build/KDE4]]&lt;br /&gt;
* [[Getting Started/Build/KDE4.x]]&lt;br /&gt;
* [[Getting Started/Build/KDE4/Prerequisites]]&lt;br /&gt;
* [[Getting Started/Build/KDE4/Windows/subversion]]&lt;br /&gt;
* [[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts]]&lt;br /&gt;
* [[Getting_Started/Build/kdesrc-build]]&lt;br /&gt;
* [[Getting Started/Sources/Anonymous SVN]]&lt;br /&gt;
* [[Getting_Started/Sources/Using_Subversion_with_KDE]]&lt;br /&gt;
* [[Getting_Started/Set_up_KDE_4_for_development]]&lt;br /&gt;
* [[Getting_Started/Using_an_IDE_with_KDE4]]&lt;br /&gt;
* [[Policies/SVN_Commit_Policy]]&lt;br /&gt;
* [[Policies/SVN_Guidelines]]&lt;br /&gt;
* [[Development/Tools]]&lt;br /&gt;
* [[Development/Tutorials/Git]]&lt;br /&gt;
* [[Development/Tutorials/Git/BestPractices]]&lt;br /&gt;
* [[Development/Tutorials/Git/Intermediate]]&lt;br /&gt;
* [[Development/Tutorials/Git/Recipes]]&lt;br /&gt;
* [[Development/Tutorials/Git/Create a patch]]&lt;br /&gt;
* [[Development/Tutorials/Git/decoding-git]]&lt;br /&gt;
* [[Projects/rekonq/Git_with_rekonq_HowTo]]&lt;br /&gt;
* [[Projects/Related/Subversion]]&lt;br /&gt;
* [[Projects/MoveToGit/StepsToMove]]&lt;br /&gt;
* [[Contribute/Get a SVN Account]]&lt;br /&gt;
* [[Contribute/First Steps with your KDE SVN Account]]&lt;br /&gt;
&lt;br /&gt;
There are also numerous other pages referring to &amp;quot;the KDE SVN/subversion repositories&amp;quot; which should be replaced with the generic &amp;quot;KDE code repositories&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
There are also numerous translated pages which will need to be updated once the original pages are completed.&lt;br /&gt;
&lt;br /&gt;
=== New Page Structure ===&lt;br /&gt;
&lt;br /&gt;
* [[Getting_Started]]&lt;br /&gt;
* [[Getting_Started/Build]]&lt;br /&gt;
* [[Getting_Started/Build/Environment]]&lt;br /&gt;
* [[Getting_Started/Build/Requirements]]&lt;br /&gt;
* [[Getting_Started/Build/Qt]]&lt;br /&gt;
* [[Getting_Started/Build/KdeSupport]]&lt;br /&gt;
* [[Getting_Started/Build/Windows]]&lt;br /&gt;
* [[Getting_Started/Build/Mac_OS_X]]&lt;br /&gt;
* [[Getting_Started/Run]]&lt;br /&gt;
* [[Getting_Started/Run/Shell]]&lt;br /&gt;
* [[Getting_Started/Run/Nested_Session]]&lt;br /&gt;
* [[Getting_Started/Run/Full_Session]]&lt;br /&gt;
&lt;br /&gt;
=== For Deletion ===&lt;br /&gt;
&lt;br /&gt;
The following pages can now be deleted and/or redirected:&lt;br /&gt;
* [[Development/Tutorials/Git/KdeOnGit]]&lt;br /&gt;
* [[Development/Tutorials/Git/Pushing]]&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git</id>
		<title>Development/Git</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git"/>
				<updated>2011-04-28T20:06:27Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: /* Git for SVN Users */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the hub page for all information about the use of Git by KDE.&lt;br /&gt;
&lt;br /&gt;
This page is a work in progress where all new Git material is being organised.  Most of these sections will eventually be moved to their own pages.  Feel free to add stuff.&lt;br /&gt;
&lt;br /&gt;
== KDE and Git ==&lt;br /&gt;
&lt;br /&gt;
This section provides details on using the KDE Git infrastructure.&lt;br /&gt;
&lt;br /&gt;
A primary resource is still http://community.kde.org/Sysadmin/GitKdeOrgManual&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Configuration ===&lt;br /&gt;
&lt;br /&gt;
How to configure Git for use with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
Please see the [[/Configuration|Git Configuration]] page.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Policies ===&lt;br /&gt;
&lt;br /&gt;
KDE policies on Git.  More generic development policies go elsewhere.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Recipes ===&lt;br /&gt;
&lt;br /&gt;
Short recipes for using Git with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
Please see the [[/Recipes|Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Tutorials ===&lt;br /&gt;
&lt;br /&gt;
More in-depth instructions in using Git.&lt;br /&gt;
&lt;br /&gt;
Please see the outdated [[Development/Tutorials/Git|KDE tutorial]] page which needs major revision.&lt;br /&gt;
&lt;br /&gt;
== External Git Resources ==&lt;br /&gt;
&lt;br /&gt;
Links to useful external sites about Git&lt;br /&gt;
&lt;br /&gt;
=== Official Documentation ===&lt;br /&gt;
&lt;br /&gt;
* http://git-scm.com/documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Git for SVN Users ===&lt;br /&gt;
&lt;br /&gt;
* http://git-scm.com/course/svn.html&lt;br /&gt;
* https://git.wiki.kernel.org/index.php/GitSvnCrashCourse&lt;br /&gt;
&lt;br /&gt;
=== Tutorials ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html The official tutorial introduction to Git]&lt;br /&gt;
* [http://www-cs-students.stanford.edu/~blynn/gitmagic/ Git Magic] - A good intro to git (in several languages!) &lt;br /&gt;
&lt;br /&gt;
=== Cheat Sheets ===&lt;br /&gt;
&lt;br /&gt;
* [http://cheat.errtheblog.com/s/git Quick reference]&lt;br /&gt;
* [http://zrusin.blogspot.com/2007/09/git-cheat-sheet.html Illustrated git cheat sheet]&lt;br /&gt;
&lt;br /&gt;
=== More Stuff ===&lt;br /&gt;
&lt;br /&gt;
* [http://progit.org/book/ Pro Git] - An easy to understand book on git (CC licensed).&lt;br /&gt;
*[http://tom.preston-werner.com/2009/05/19/the-git-parable.html The Git Parable] - Essential reading if you want to truly understand git.&lt;br /&gt;
&lt;br /&gt;
= Documentation Changes =&lt;br /&gt;
&lt;br /&gt;
== KDE Documentation Review ==&lt;br /&gt;
&lt;br /&gt;
=== Existing Pages For Review ===&lt;br /&gt;
&lt;br /&gt;
Existing KDE pages about Git, SVN, and/or buildinga KDE that need to be revised.  When revising pages try to split the generic development and revision control policies separate from Git specific stuff.  Do not refer to &amp;quot;the KDE Git Repository&amp;quot; but instead the &amp;quot;KDE Code Repository&amp;quot;.  Lots of small simple pages that are less daunting to newbies and can be linked to from multiple locations are preferred to massive walls of text.&lt;br /&gt;
&lt;br /&gt;
Keep:&lt;br /&gt;
* [[Development/Tutorials/Git/Basics]]&lt;br /&gt;
* [[Development/Tutorials/Git/git-svn]]&lt;br /&gt;
* [[Development/Tutorials/Git/kde-qt]]&lt;br /&gt;
* [[Getting Started/Sources/Amarok Git Tutorial]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On community.kde.org:&lt;br /&gt;
* http://community.kde.org/Sysadmin/GitKdeOrgManual&lt;br /&gt;
* http://community.kde.org/20110213_GitWorkflowAgenda&lt;br /&gt;
* http://community.kde.org/20110213_GitWorkflowAgenda/StevesIdea&lt;br /&gt;
&lt;br /&gt;
On techbase.kde.org:&lt;br /&gt;
* [[Getting Started]]&lt;br /&gt;
* [[Getting Started/Build/KDE4]]&lt;br /&gt;
* [[Getting Started/Build/KDE4.x]]&lt;br /&gt;
* [[Getting Started/Build/KDE4/Prerequisites]]&lt;br /&gt;
* [[Getting Started/Build/KDE4/Windows/subversion]]&lt;br /&gt;
* [[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts]]&lt;br /&gt;
* [[Getting_Started/Build/kdesrc-build]]&lt;br /&gt;
* [[Getting Started/Sources/Anonymous SVN]]&lt;br /&gt;
* [[Getting_Started/Sources/Using_Subversion_with_KDE]]&lt;br /&gt;
* [[Getting_Started/Set_up_KDE_4_for_development]]&lt;br /&gt;
* [[Getting_Started/Using_an_IDE_with_KDE4]]&lt;br /&gt;
* [[Policies/SVN_Commit_Policy]]&lt;br /&gt;
* [[Policies/SVN_Guidelines]]&lt;br /&gt;
* [[Development/Tools]]&lt;br /&gt;
* [[Development/Tutorials/Git]]&lt;br /&gt;
* [[Development/Tutorials/Git/BestPractices]]&lt;br /&gt;
* [[Development/Tutorials/Git/Intermediate]]&lt;br /&gt;
* [[Development/Tutorials/Git/Recipes]]&lt;br /&gt;
* [[Development/Tutorials/Git/Create a patch]]&lt;br /&gt;
* [[Development/Tutorials/Git/decoding-git]]&lt;br /&gt;
* [[Projects/rekonq/Git_with_rekonq_HowTo]]&lt;br /&gt;
* [[Projects/Related/Subversion]]&lt;br /&gt;
* [[Projects/MoveToGit/StepsToMove]]&lt;br /&gt;
* [[Contribute/Get a SVN Account]]&lt;br /&gt;
* [[Contribute/First Steps with your KDE SVN Account]]&lt;br /&gt;
&lt;br /&gt;
There are also numerous other pages referring to &amp;quot;the KDE SVN/subversion repositories&amp;quot; which should be replaced with the generic &amp;quot;KDE code repositories&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
There are also numerous translated pages which will need to be updated once the original pages are completed.&lt;br /&gt;
&lt;br /&gt;
=== New Page Structure ===&lt;br /&gt;
&lt;br /&gt;
* [[Getting_Started]]&lt;br /&gt;
* [[Getting_Started/Build]]&lt;br /&gt;
* [[Getting_Started/Build/Environment]]&lt;br /&gt;
* [[Getting_Started/Build/Requirements]]&lt;br /&gt;
* [[Getting_Started/Build/Qt]]&lt;br /&gt;
* [[Getting_Started/Build/KdeSupport]]&lt;br /&gt;
* [[Getting_Started/Build/Windows]]&lt;br /&gt;
* [[Getting_Started/Build/Mac_OS_X]]&lt;br /&gt;
* [[Getting_Started/Run]]&lt;br /&gt;
* [[Getting_Started/Run/Shell]]&lt;br /&gt;
* [[Getting_Started/Run/Nested_Session]]&lt;br /&gt;
* [[Getting_Started/Run/Full_Session]]&lt;br /&gt;
&lt;br /&gt;
=== For Deletion ===&lt;br /&gt;
&lt;br /&gt;
The following pages can now be deleted and/or redirected:&lt;br /&gt;
* [[Development/Tutorials/Git/KdeOnGit]]&lt;br /&gt;
* [[Development/Tutorials/Git/Pushing]]&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git</id>
		<title>Development/Git</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git"/>
				<updated>2011-04-28T20:03:43Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: /* External Git Resources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the hub page for all information about the use of Git by KDE.&lt;br /&gt;
&lt;br /&gt;
This page is a work in progress where all new Git material is being organised.  Most of these sections will eventually be moved to their own pages.  Feel free to add stuff.&lt;br /&gt;
&lt;br /&gt;
== KDE and Git ==&lt;br /&gt;
&lt;br /&gt;
This section provides details on using the KDE Git infrastructure.&lt;br /&gt;
&lt;br /&gt;
A primary resource is still http://community.kde.org/Sysadmin/GitKdeOrgManual&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Configuration ===&lt;br /&gt;
&lt;br /&gt;
How to configure Git for use with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
Please see the [[/Configuration|Git Configuration]] page.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Policies ===&lt;br /&gt;
&lt;br /&gt;
KDE policies on Git.  More generic development policies go elsewhere.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Recipes ===&lt;br /&gt;
&lt;br /&gt;
Short recipes for using Git with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
Please see the [[/Recipes|Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Tutorials ===&lt;br /&gt;
&lt;br /&gt;
More in-depth instructions in using Git.&lt;br /&gt;
&lt;br /&gt;
Please see the outdated [[Development/Tutorials/Git|KDE tutorial]] page which needs major revision.&lt;br /&gt;
&lt;br /&gt;
== External Git Resources ==&lt;br /&gt;
&lt;br /&gt;
Links to useful external sites about Git&lt;br /&gt;
&lt;br /&gt;
=== Official Documentation ===&lt;br /&gt;
&lt;br /&gt;
* http://git-scm.com/documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Git for SVN Users ===&lt;br /&gt;
&lt;br /&gt;
* http://git-scm.com/course/svn.html&lt;br /&gt;
* [http://git.or.cz/course/svn.html git &amp;lt;-&amp;gt; svn crash course] - Maps git commands to svn commands&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Tutorials ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html The official tutorial introduction to Git]&lt;br /&gt;
* [http://www-cs-students.stanford.edu/~blynn/gitmagic/ Git Magic] - A good intro to git (in several languages!) &lt;br /&gt;
&lt;br /&gt;
=== Cheat Sheets ===&lt;br /&gt;
&lt;br /&gt;
* [http://cheat.errtheblog.com/s/git Quick reference]&lt;br /&gt;
* [http://zrusin.blogspot.com/2007/09/git-cheat-sheet.html Illustrated git cheat sheet]&lt;br /&gt;
&lt;br /&gt;
=== More Stuff ===&lt;br /&gt;
&lt;br /&gt;
* [http://progit.org/book/ Pro Git] - An easy to understand book on git (CC licensed).&lt;br /&gt;
*[http://tom.preston-werner.com/2009/05/19/the-git-parable.html The Git Parable] - Essential reading if you want to truly understand git.&lt;br /&gt;
&lt;br /&gt;
= Documentation Changes =&lt;br /&gt;
&lt;br /&gt;
== KDE Documentation Review ==&lt;br /&gt;
&lt;br /&gt;
=== Existing Pages For Review ===&lt;br /&gt;
&lt;br /&gt;
Existing KDE pages about Git, SVN, and/or buildinga KDE that need to be revised.  When revising pages try to split the generic development and revision control policies separate from Git specific stuff.  Do not refer to &amp;quot;the KDE Git Repository&amp;quot; but instead the &amp;quot;KDE Code Repository&amp;quot;.  Lots of small simple pages that are less daunting to newbies and can be linked to from multiple locations are preferred to massive walls of text.&lt;br /&gt;
&lt;br /&gt;
Keep:&lt;br /&gt;
* [[Development/Tutorials/Git/Basics]]&lt;br /&gt;
* [[Development/Tutorials/Git/git-svn]]&lt;br /&gt;
* [[Development/Tutorials/Git/kde-qt]]&lt;br /&gt;
* [[Getting Started/Sources/Amarok Git Tutorial]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On community.kde.org:&lt;br /&gt;
* http://community.kde.org/Sysadmin/GitKdeOrgManual&lt;br /&gt;
* http://community.kde.org/20110213_GitWorkflowAgenda&lt;br /&gt;
* http://community.kde.org/20110213_GitWorkflowAgenda/StevesIdea&lt;br /&gt;
&lt;br /&gt;
On techbase.kde.org:&lt;br /&gt;
* [[Getting Started]]&lt;br /&gt;
* [[Getting Started/Build/KDE4]]&lt;br /&gt;
* [[Getting Started/Build/KDE4.x]]&lt;br /&gt;
* [[Getting Started/Build/KDE4/Prerequisites]]&lt;br /&gt;
* [[Getting Started/Build/KDE4/Windows/subversion]]&lt;br /&gt;
* [[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts]]&lt;br /&gt;
* [[Getting_Started/Build/kdesrc-build]]&lt;br /&gt;
* [[Getting Started/Sources/Anonymous SVN]]&lt;br /&gt;
* [[Getting_Started/Sources/Using_Subversion_with_KDE]]&lt;br /&gt;
* [[Getting_Started/Set_up_KDE_4_for_development]]&lt;br /&gt;
* [[Getting_Started/Using_an_IDE_with_KDE4]]&lt;br /&gt;
* [[Policies/SVN_Commit_Policy]]&lt;br /&gt;
* [[Policies/SVN_Guidelines]]&lt;br /&gt;
* [[Development/Tools]]&lt;br /&gt;
* [[Development/Tutorials/Git]]&lt;br /&gt;
* [[Development/Tutorials/Git/BestPractices]]&lt;br /&gt;
* [[Development/Tutorials/Git/Intermediate]]&lt;br /&gt;
* [[Development/Tutorials/Git/Recipes]]&lt;br /&gt;
* [[Development/Tutorials/Git/Create a patch]]&lt;br /&gt;
* [[Development/Tutorials/Git/decoding-git]]&lt;br /&gt;
* [[Projects/rekonq/Git_with_rekonq_HowTo]]&lt;br /&gt;
* [[Projects/Related/Subversion]]&lt;br /&gt;
* [[Projects/MoveToGit/StepsToMove]]&lt;br /&gt;
* [[Contribute/Get a SVN Account]]&lt;br /&gt;
* [[Contribute/First Steps with your KDE SVN Account]]&lt;br /&gt;
&lt;br /&gt;
There are also numerous other pages referring to &amp;quot;the KDE SVN/subversion repositories&amp;quot; which should be replaced with the generic &amp;quot;KDE code repositories&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
There are also numerous translated pages which will need to be updated once the original pages are completed.&lt;br /&gt;
&lt;br /&gt;
=== New Page Structure ===&lt;br /&gt;
&lt;br /&gt;
* [[Getting_Started]]&lt;br /&gt;
* [[Getting_Started/Build]]&lt;br /&gt;
* [[Getting_Started/Build/Environment]]&lt;br /&gt;
* [[Getting_Started/Build/Requirements]]&lt;br /&gt;
* [[Getting_Started/Build/Qt]]&lt;br /&gt;
* [[Getting_Started/Build/KdeSupport]]&lt;br /&gt;
* [[Getting_Started/Build/Windows]]&lt;br /&gt;
* [[Getting_Started/Build/Mac_OS_X]]&lt;br /&gt;
* [[Getting_Started/Run]]&lt;br /&gt;
* [[Getting_Started/Run/Shell]]&lt;br /&gt;
* [[Getting_Started/Run/Nested_Session]]&lt;br /&gt;
* [[Getting_Started/Run/Full_Session]]&lt;br /&gt;
&lt;br /&gt;
=== For Deletion ===&lt;br /&gt;
&lt;br /&gt;
The following pages can now be deleted and/or redirected:&lt;br /&gt;
* [[Development/Tutorials/Git/KdeOnGit]]&lt;br /&gt;
* [[Development/Tutorials/Git/Pushing]]&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git</id>
		<title>Development/Git</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git"/>
				<updated>2011-04-28T20:00:23Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: /* KDE Documentation Review */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the hub page for all information about the use of Git by KDE.&lt;br /&gt;
&lt;br /&gt;
This page is a work in progress where all new Git material is being organised.  Most of these sections will eventually be moved to their own pages.  Feel free to add stuff.&lt;br /&gt;
&lt;br /&gt;
== KDE and Git ==&lt;br /&gt;
&lt;br /&gt;
This section provides details on using the KDE Git infrastructure.&lt;br /&gt;
&lt;br /&gt;
A primary resource is still http://community.kde.org/Sysadmin/GitKdeOrgManual&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Configuration ===&lt;br /&gt;
&lt;br /&gt;
How to configure Git for use with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
Please see the [[/Configuration|Git Configuration]] page.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Policies ===&lt;br /&gt;
&lt;br /&gt;
KDE policies on Git.  More generic development policies go elsewhere.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Recipes ===&lt;br /&gt;
&lt;br /&gt;
Short recipes for using Git with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
Please see the [[/Recipes|Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Tutorials ===&lt;br /&gt;
&lt;br /&gt;
More in-depth instructions in using Git.&lt;br /&gt;
&lt;br /&gt;
Please see the outdated [[Development/Tutorials/Git|KDE tutorial]] page which needs major revision.&lt;br /&gt;
&lt;br /&gt;
== External Git Resources ==&lt;br /&gt;
&lt;br /&gt;
Links to useful external sites about Git&lt;br /&gt;
&lt;br /&gt;
=== Official Documentation ===&lt;br /&gt;
&lt;br /&gt;
* http://git-scm.com/documentation&lt;br /&gt;
&lt;br /&gt;
=== Git for SVN Users ===&lt;br /&gt;
&lt;br /&gt;
* http://git-scm.com/course/svn.html&lt;br /&gt;
&lt;br /&gt;
=== Tutorials ===&lt;br /&gt;
&lt;br /&gt;
=== Cheat Sheets ===&lt;br /&gt;
&lt;br /&gt;
* http://cheat.errtheblog.com/s/git&lt;br /&gt;
&lt;br /&gt;
= Documentation Changes =&lt;br /&gt;
&lt;br /&gt;
== KDE Documentation Review ==&lt;br /&gt;
&lt;br /&gt;
=== Existing Pages For Review ===&lt;br /&gt;
&lt;br /&gt;
Existing KDE pages about Git, SVN, and/or buildinga KDE that need to be revised.  When revising pages try to split the generic development and revision control policies separate from Git specific stuff.  Do not refer to &amp;quot;the KDE Git Repository&amp;quot; but instead the &amp;quot;KDE Code Repository&amp;quot;.  Lots of small simple pages that are less daunting to newbies and can be linked to from multiple locations are preferred to massive walls of text.&lt;br /&gt;
&lt;br /&gt;
Keep:&lt;br /&gt;
* [[Development/Tutorials/Git/Basics]]&lt;br /&gt;
* [[Development/Tutorials/Git/git-svn]]&lt;br /&gt;
* [[Development/Tutorials/Git/kde-qt]]&lt;br /&gt;
* [[Getting Started/Sources/Amarok Git Tutorial]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On community.kde.org:&lt;br /&gt;
* http://community.kde.org/Sysadmin/GitKdeOrgManual&lt;br /&gt;
* http://community.kde.org/20110213_GitWorkflowAgenda&lt;br /&gt;
* http://community.kde.org/20110213_GitWorkflowAgenda/StevesIdea&lt;br /&gt;
&lt;br /&gt;
On techbase.kde.org:&lt;br /&gt;
* [[Getting Started]]&lt;br /&gt;
* [[Getting Started/Build/KDE4]]&lt;br /&gt;
* [[Getting Started/Build/KDE4.x]]&lt;br /&gt;
* [[Getting Started/Build/KDE4/Prerequisites]]&lt;br /&gt;
* [[Getting Started/Build/KDE4/Windows/subversion]]&lt;br /&gt;
* [[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts]]&lt;br /&gt;
* [[Getting_Started/Build/kdesrc-build]]&lt;br /&gt;
* [[Getting Started/Sources/Anonymous SVN]]&lt;br /&gt;
* [[Getting_Started/Sources/Using_Subversion_with_KDE]]&lt;br /&gt;
* [[Getting_Started/Set_up_KDE_4_for_development]]&lt;br /&gt;
* [[Getting_Started/Using_an_IDE_with_KDE4]]&lt;br /&gt;
* [[Policies/SVN_Commit_Policy]]&lt;br /&gt;
* [[Policies/SVN_Guidelines]]&lt;br /&gt;
* [[Development/Tools]]&lt;br /&gt;
* [[Development/Tutorials/Git]]&lt;br /&gt;
* [[Development/Tutorials/Git/BestPractices]]&lt;br /&gt;
* [[Development/Tutorials/Git/Intermediate]]&lt;br /&gt;
* [[Development/Tutorials/Git/Recipes]]&lt;br /&gt;
* [[Development/Tutorials/Git/Create a patch]]&lt;br /&gt;
* [[Development/Tutorials/Git/decoding-git]]&lt;br /&gt;
* [[Projects/rekonq/Git_with_rekonq_HowTo]]&lt;br /&gt;
* [[Projects/Related/Subversion]]&lt;br /&gt;
* [[Projects/MoveToGit/StepsToMove]]&lt;br /&gt;
* [[Contribute/Get a SVN Account]]&lt;br /&gt;
* [[Contribute/First Steps with your KDE SVN Account]]&lt;br /&gt;
&lt;br /&gt;
There are also numerous other pages referring to &amp;quot;the KDE SVN/subversion repositories&amp;quot; which should be replaced with the generic &amp;quot;KDE code repositories&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
There are also numerous translated pages which will need to be updated once the original pages are completed.&lt;br /&gt;
&lt;br /&gt;
=== New Page Structure ===&lt;br /&gt;
&lt;br /&gt;
* [[Getting_Started]]&lt;br /&gt;
* [[Getting_Started/Build]]&lt;br /&gt;
* [[Getting_Started/Build/Environment]]&lt;br /&gt;
* [[Getting_Started/Build/Requirements]]&lt;br /&gt;
* [[Getting_Started/Build/Qt]]&lt;br /&gt;
* [[Getting_Started/Build/KdeSupport]]&lt;br /&gt;
* [[Getting_Started/Build/Windows]]&lt;br /&gt;
* [[Getting_Started/Build/Mac_OS_X]]&lt;br /&gt;
* [[Getting_Started/Run]]&lt;br /&gt;
* [[Getting_Started/Run/Shell]]&lt;br /&gt;
* [[Getting_Started/Run/Nested_Session]]&lt;br /&gt;
* [[Getting_Started/Run/Full_Session]]&lt;br /&gt;
&lt;br /&gt;
=== For Deletion ===&lt;br /&gt;
&lt;br /&gt;
The following pages can now be deleted and/or redirected:&lt;br /&gt;
* [[Development/Tutorials/Git/KdeOnGit]]&lt;br /&gt;
* [[Development/Tutorials/Git/Pushing]]&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git</id>
		<title>Development/Git</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git"/>
				<updated>2011-04-28T19:59:13Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the hub page for all information about the use of Git by KDE.&lt;br /&gt;
&lt;br /&gt;
This page is a work in progress where all new Git material is being organised.  Most of these sections will eventually be moved to their own pages.  Feel free to add stuff.&lt;br /&gt;
&lt;br /&gt;
== KDE and Git ==&lt;br /&gt;
&lt;br /&gt;
This section provides details on using the KDE Git infrastructure.&lt;br /&gt;
&lt;br /&gt;
A primary resource is still http://community.kde.org/Sysadmin/GitKdeOrgManual&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Configuration ===&lt;br /&gt;
&lt;br /&gt;
How to configure Git for use with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
Please see the [[/Configuration|Git Configuration]] page.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Policies ===&lt;br /&gt;
&lt;br /&gt;
KDE policies on Git.  More generic development policies go elsewhere.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Recipes ===&lt;br /&gt;
&lt;br /&gt;
Short recipes for using Git with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
Please see the [[/Recipes|Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Tutorials ===&lt;br /&gt;
&lt;br /&gt;
More in-depth instructions in using Git.&lt;br /&gt;
&lt;br /&gt;
Please see the outdated [[Development/Tutorials/Git|KDE tutorial]] page which needs major revision.&lt;br /&gt;
&lt;br /&gt;
== External Git Resources ==&lt;br /&gt;
&lt;br /&gt;
Links to useful external sites about Git&lt;br /&gt;
&lt;br /&gt;
=== Official Documentation ===&lt;br /&gt;
&lt;br /&gt;
* http://git-scm.com/documentation&lt;br /&gt;
&lt;br /&gt;
=== Git for SVN Users ===&lt;br /&gt;
&lt;br /&gt;
* http://git-scm.com/course/svn.html&lt;br /&gt;
&lt;br /&gt;
=== Tutorials ===&lt;br /&gt;
&lt;br /&gt;
=== Cheat Sheets ===&lt;br /&gt;
&lt;br /&gt;
* http://cheat.errtheblog.com/s/git&lt;br /&gt;
&lt;br /&gt;
= Documentation Changes =&lt;br /&gt;
&lt;br /&gt;
== KDE Documentation Review ==&lt;br /&gt;
&lt;br /&gt;
=== Existing Pages For Review ===&lt;br /&gt;
&lt;br /&gt;
Existing KDE pages about Git, SVN, and/or building KDE that need to be revised.  When revising pages try to split the generic development and revision control policies separate from Git specific stuff.  Do not refer to &amp;quot;the KDE Git Repository&amp;quot; but instead the &amp;quot;KDE Code Repository&amp;quot;.  Lots of small simple pages that are less daunting to newbies and can be linked to from multiple locations are preferred to massive walls of text.&lt;br /&gt;
&lt;br /&gt;
Keep:&lt;br /&gt;
* [[Development/Tutorials/Git/Basics]]&lt;br /&gt;
* [[Development/Tutorials/Git/git-svn]]&lt;br /&gt;
* [[Development/Tutorials/Git/kde-qt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On community.kde.org:&lt;br /&gt;
* http://community.kde.org/Sysadmin/GitKdeOrgManual&lt;br /&gt;
* http://community.kde.org/20110213_GitWorkflowAgenda&lt;br /&gt;
* http://community.kde.org/20110213_GitWorkflowAgenda/StevesIdea&lt;br /&gt;
&lt;br /&gt;
On techbase.kde.org:&lt;br /&gt;
* [[Getting Started]]&lt;br /&gt;
* [[Getting Started/Build/KDE4]]&lt;br /&gt;
* [[Getting Started/Build/KDE4.x]]&lt;br /&gt;
* [[Getting Started/Build/KDE4/Prerequisites]]&lt;br /&gt;
* [[Getting Started/Build/KDE4/Windows/subversion]]&lt;br /&gt;
* [[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts]]&lt;br /&gt;
* [[Getting_Started/Build/kdesrc-build]]&lt;br /&gt;
* [[Getting Started/Sources/Anonymous SVN]]&lt;br /&gt;
* [[Getting_Started/Sources/Using_Subversion_with_KDE]]&lt;br /&gt;
* [[Getting Started/Sources/Amarok Git Tutorial]]&lt;br /&gt;
* [[Getting_Started/Set_up_KDE_4_for_development]]&lt;br /&gt;
* [[Getting_Started/Using_an_IDE_with_KDE4]]&lt;br /&gt;
* [[Policies/SVN_Commit_Policy]]&lt;br /&gt;
* [[Policies/SVN_Guidelines]]&lt;br /&gt;
* [[Development/Tools]]&lt;br /&gt;
* [[Development/Tutorials/Git]]&lt;br /&gt;
* [[Development/Tutorials/Git/BestPractices]]&lt;br /&gt;
* [[Development/Tutorials/Git/Intermediate]]&lt;br /&gt;
* [[Development/Tutorials/Git/Recipes]]&lt;br /&gt;
* [[Development/Tutorials/Git/Create a patch]]&lt;br /&gt;
* [[Development/Tutorials/Git/decoding-git]]&lt;br /&gt;
* [[Projects/rekonq/Git_with_rekonq_HowTo]]&lt;br /&gt;
* [[Projects/Related/Subversion]]&lt;br /&gt;
* [[Projects/MoveToGit/StepsToMove]]&lt;br /&gt;
* [[Contribute/Get a SVN Account]]&lt;br /&gt;
* [[Contribute/First Steps with your KDE SVN Account]]&lt;br /&gt;
&lt;br /&gt;
There are also numerous other pages referring to &amp;quot;the KDE SVN/subversion repositories&amp;quot; which should be replaced with the generic &amp;quot;KDE code repositories&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
There are also numerous translated pages which will need to be updated once the original pages are completed.&lt;br /&gt;
&lt;br /&gt;
=== New Page Structure ===&lt;br /&gt;
&lt;br /&gt;
* [[Getting_Started]]&lt;br /&gt;
* [[Getting_Started/Build]]&lt;br /&gt;
* [[Getting_Started/Build/Environment]]&lt;br /&gt;
* [[Getting_Started/Build/Requirements]]&lt;br /&gt;
* [[Getting_Started/Build/Qt]]&lt;br /&gt;
* [[Getting_Started/Build/KdeSupport]]&lt;br /&gt;
* [[Getting_Started/Build/Windows]]&lt;br /&gt;
* [[Getting_Started/Build/Mac_OS_X]]&lt;br /&gt;
* [[Getting_Started/Run]]&lt;br /&gt;
* [[Getting_Started/Run/Shell]]&lt;br /&gt;
* [[Getting_Started/Run/Nested_Session]]&lt;br /&gt;
* [[Getting_Started/Run/Full_Session]]&lt;br /&gt;
&lt;br /&gt;
=== For Deletion ===&lt;br /&gt;
&lt;br /&gt;
The following pages can now be deleted and/or redirected:&lt;br /&gt;
* [[Development/Tutorials/Git/KdeOnGit]]&lt;br /&gt;
* [[Development/Tutorials/Git/Pushing]]&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git</id>
		<title>Development/Git</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git"/>
				<updated>2011-04-28T19:53:10Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: /* Documentation Changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the hub page for all information about the use of Git by KDE.&lt;br /&gt;
&lt;br /&gt;
This page is a work in progress where all new Git material is being organised.  Most of these sections will eventually be moved to their own pages.  Feel free to add stuff.&lt;br /&gt;
&lt;br /&gt;
== KDE and Git ==&lt;br /&gt;
&lt;br /&gt;
This section provides details on using the KDE Git infrastructure.&lt;br /&gt;
&lt;br /&gt;
A primary resource is still http://community.kde.org/Sysadmin/GitKdeOrgManual&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Configuration ===&lt;br /&gt;
&lt;br /&gt;
How to configure Git for use with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
Please see the [[/Configuration|Git Configuration]] page.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Policies ===&lt;br /&gt;
&lt;br /&gt;
KDE policies on Git.  More generic development policies go elsewhere.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Recipes ===&lt;br /&gt;
&lt;br /&gt;
Short recipes for using Git with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
Please see the [[/Recipes|Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Tutorials ===&lt;br /&gt;
&lt;br /&gt;
More in-depth instructions in using Git.&lt;br /&gt;
&lt;br /&gt;
Please see the outdated [[Development/Tutorials/Git|KDE tutorial]] page which needs major revision.&lt;br /&gt;
&lt;br /&gt;
== External Git Resources ==&lt;br /&gt;
&lt;br /&gt;
Links to useful external sites about Git&lt;br /&gt;
&lt;br /&gt;
=== Official Documentation ===&lt;br /&gt;
&lt;br /&gt;
* http://git-scm.com/documentation&lt;br /&gt;
&lt;br /&gt;
=== Git for SVN Users ===&lt;br /&gt;
&lt;br /&gt;
* http://git-scm.com/course/svn.html&lt;br /&gt;
&lt;br /&gt;
=== Tutorials ===&lt;br /&gt;
&lt;br /&gt;
=== Cheat Sheets ===&lt;br /&gt;
&lt;br /&gt;
* http://cheat.errtheblog.com/s/git&lt;br /&gt;
&lt;br /&gt;
= Documentation Changes =&lt;br /&gt;
&lt;br /&gt;
== KDE Documentation Review ==&lt;br /&gt;
&lt;br /&gt;
=== Existing Pages For Review ===&lt;br /&gt;
&lt;br /&gt;
Existing KDE pages about Git, SVN, and/or building KDE that need to be revised.  When revising pages try to split the generic development and revision control policies separate from Git specific stuff.  Do not refer to &amp;quot;the KDE Git Repository&amp;quot; but instead the &amp;quot;KDE Code Repository&amp;quot;.  Lots of small simple pages that are less daunting to newbies and can be linked to from multiple locations are preferred to massive walls of text.&lt;br /&gt;
&lt;br /&gt;
On community.kde.org:&lt;br /&gt;
* http://community.kde.org/Sysadmin/GitKdeOrgManual&lt;br /&gt;
* http://community.kde.org/20110213_GitWorkflowAgenda&lt;br /&gt;
* http://community.kde.org/20110213_GitWorkflowAgenda/StevesIdea&lt;br /&gt;
&lt;br /&gt;
On techbase.kde.org:&lt;br /&gt;
* [[Getting Started]]&lt;br /&gt;
* [[Getting Started/Build/KDE4]]&lt;br /&gt;
* [[Getting Started/Build/KDE4.x]]&lt;br /&gt;
* [[Getting Started/Build/KDE4/Prerequisites]]&lt;br /&gt;
* [[Getting Started/Build/KDE4/Windows/subversion]]&lt;br /&gt;
* [[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts]]&lt;br /&gt;
* [[Getting_Started/Build/kdesrc-build]]&lt;br /&gt;
* [[Getting Started/Sources/Anonymous SVN]]&lt;br /&gt;
* [[Getting_Started/Sources/Using_Subversion_with_KDE]]&lt;br /&gt;
* [[Getting Started/Sources/Amarok Git Tutorial]]&lt;br /&gt;
* [[Getting_Started/Set_up_KDE_4_for_development]]&lt;br /&gt;
* [[Getting_Started/Using_an_IDE_with_KDE4]]&lt;br /&gt;
* [[Policies/SVN_Commit_Policy]]&lt;br /&gt;
* [[Policies/SVN_Guidelines]]&lt;br /&gt;
* [[Development/Tools]]&lt;br /&gt;
* [[Development/Tutorials/Git]]&lt;br /&gt;
* [[Development/Tutorials/Git/BestPractices]]&lt;br /&gt;
* [[Development/Tutorials/Git/Intermediate]]&lt;br /&gt;
* [[Development/Tutorials/Git/Recipes]]&lt;br /&gt;
* [[Development/Tutorials/Git/Create a patch]]&lt;br /&gt;
* [[Development/Tutorials/Git/git-svn]]&lt;br /&gt;
* [[Development/Tutorials/Git/Basics]]&lt;br /&gt;
* [[Development/Tutorials/Git/kde-qt]]&lt;br /&gt;
* [[Development/Tutorials/Git/decoding-git]]&lt;br /&gt;
* [[Projects/rekonq/Git_with_rekonq_HowTo]]&lt;br /&gt;
* [[Projects/Related/Subversion]]&lt;br /&gt;
* [[Projects/MoveToGit/StepsToMove]]&lt;br /&gt;
* [[Contribute/Get a SVN Account]]&lt;br /&gt;
* [[Contribute/First Steps with your KDE SVN Account]]&lt;br /&gt;
&lt;br /&gt;
There are also numerous other pages referring to &amp;quot;the KDE SVN/subversion repositories&amp;quot; which should be replaced with the generic &amp;quot;KDE code repositories&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
There are also numerous translated pages which will need to be updated once the original pages are completed.&lt;br /&gt;
&lt;br /&gt;
=== New Page Structure ===&lt;br /&gt;
&lt;br /&gt;
* [[Getting_Started]]&lt;br /&gt;
* [[Getting_Started/Build]]&lt;br /&gt;
* [[Getting_Started/Build/Environment]]&lt;br /&gt;
* [[Getting_Started/Build/Requirements]]&lt;br /&gt;
* [[Getting_Started/Build/Qt]]&lt;br /&gt;
* [[Getting_Started/Build/KdeSupport]]&lt;br /&gt;
* [[Getting_Started/Build/Windows]]&lt;br /&gt;
* [[Getting_Started/Build/Mac_OS_X]]&lt;br /&gt;
* [[Getting_Started/Run]]&lt;br /&gt;
* [[Getting_Started/Run/Shell]]&lt;br /&gt;
* [[Getting_Started/Run/Nested_Session]]&lt;br /&gt;
* [[Getting_Started/Run/Full_Session]]&lt;br /&gt;
&lt;br /&gt;
=== For Deletion ===&lt;br /&gt;
&lt;br /&gt;
The following pages can now be deleted and/or redirected:&lt;br /&gt;
* [[Development/Tutorials/Git/KdeOnGit]]&lt;br /&gt;
* [[Development/Tutorials/Git/Pushing]]&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git</id>
		<title>Development/Git</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git"/>
				<updated>2011-04-28T19:52:44Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: /* Existing Pages For Review */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the hub page for all information about the use of Git by KDE.&lt;br /&gt;
&lt;br /&gt;
This page is a work in progress where all new Git material is being organised.  Most of these sections will eventually be moved to their own pages.  Feel free to add stuff.&lt;br /&gt;
&lt;br /&gt;
== KDE and Git ==&lt;br /&gt;
&lt;br /&gt;
This section provides details on using the KDE Git infrastructure.&lt;br /&gt;
&lt;br /&gt;
A primary resource is still http://community.kde.org/Sysadmin/GitKdeOrgManual&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Configuration ===&lt;br /&gt;
&lt;br /&gt;
How to configure Git for use with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
Please see the [[/Configuration|Git Configuration]] page.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Policies ===&lt;br /&gt;
&lt;br /&gt;
KDE policies on Git.  More generic development policies go elsewhere.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Recipes ===&lt;br /&gt;
&lt;br /&gt;
Short recipes for using Git with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
Please see the [[/Recipes|Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Tutorials ===&lt;br /&gt;
&lt;br /&gt;
More in-depth instructions in using Git.&lt;br /&gt;
&lt;br /&gt;
Please see the outdated [[Development/Tutorials/Git|KDE tutorial]] page which needs major revision.&lt;br /&gt;
&lt;br /&gt;
== External Git Resources ==&lt;br /&gt;
&lt;br /&gt;
Links to useful external sites about Git&lt;br /&gt;
&lt;br /&gt;
=== Official Documentation ===&lt;br /&gt;
&lt;br /&gt;
* http://git-scm.com/documentation&lt;br /&gt;
&lt;br /&gt;
=== Git for SVN Users ===&lt;br /&gt;
&lt;br /&gt;
* http://git-scm.com/course/svn.html&lt;br /&gt;
&lt;br /&gt;
=== Tutorials ===&lt;br /&gt;
&lt;br /&gt;
=== Cheat Sheets ===&lt;br /&gt;
&lt;br /&gt;
* http://cheat.errtheblog.com/s/git&lt;br /&gt;
&lt;br /&gt;
= Documentation Changes =&lt;br /&gt;
&lt;br /&gt;
== KDE Documentation Review ==&lt;br /&gt;
&lt;br /&gt;
=== Existing Pages For Review ===&lt;br /&gt;
&lt;br /&gt;
Existing KDE pages about Git, SVN, and/or building KDE that need to be revised.  When revising pages try to split the generic development and revision control policies separate from Git specific stuff.  Do not refer to &amp;quot;the KDE Git Repository&amp;quot; but instead the &amp;quot;KDE Code Repository&amp;quot;.  Lots of small simple pages that are less daunting to newbies and can be linked to from multiple locations are preferred to massive walls of text.&lt;br /&gt;
&lt;br /&gt;
On community.kde.org:&lt;br /&gt;
* http://community.kde.org/Sysadmin/GitKdeOrgManual&lt;br /&gt;
* http://community.kde.org/20110213_GitWorkflowAgenda&lt;br /&gt;
* http://community.kde.org/20110213_GitWorkflowAgenda/StevesIdea&lt;br /&gt;
&lt;br /&gt;
On techbase.kde.org:&lt;br /&gt;
* [[Getting Started]]&lt;br /&gt;
* [[Getting Started/Build/KDE4]]&lt;br /&gt;
* [[Getting Started/Build/KDE4.x]]&lt;br /&gt;
* [[Getting Started/Build/KDE4/Prerequisites]]&lt;br /&gt;
* [[Getting Started/Build/KDE4/Windows/subversion]]&lt;br /&gt;
* [[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts]]&lt;br /&gt;
* [[Getting_Started/Build/kdesrc-build]]&lt;br /&gt;
* [[Getting Started/Sources/Anonymous SVN]]&lt;br /&gt;
* [[Getting_Started/Sources/Using_Subversion_with_KDE]]&lt;br /&gt;
* [[Getting Started/Sources/Amarok Git Tutorial]]&lt;br /&gt;
* [[Getting_Started/Set_up_KDE_4_for_development]]&lt;br /&gt;
* [[Getting_Started/Using_an_IDE_with_KDE4]]&lt;br /&gt;
* [[Policies/SVN_Commit_Policy]]&lt;br /&gt;
* [[Policies/SVN_Guidelines]]&lt;br /&gt;
* [[Development/Tools]]&lt;br /&gt;
* [[Development/Tutorials/Git]]&lt;br /&gt;
* [[Development/Tutorials/Git/BestPractices]]&lt;br /&gt;
* [[Development/Tutorials/Git/Intermediate]]&lt;br /&gt;
* [[Development/Tutorials/Git/Recipes]]&lt;br /&gt;
* [[Development/Tutorials/Git/Create a patch]]&lt;br /&gt;
* [[Development/Tutorials/Git/git-svn]]&lt;br /&gt;
* [[Development/Tutorials/Git/Basics]]&lt;br /&gt;
* [[Development/Tutorials/Git/KdeOnGit]]&lt;br /&gt;
* [[Development/Tutorials/Git/kde-qt]]&lt;br /&gt;
* [[Development/Tutorials/Git/decoding-git]]&lt;br /&gt;
* [[Projects/rekonq/Git_with_rekonq_HowTo]]&lt;br /&gt;
* [[Projects/Related/Subversion]]&lt;br /&gt;
* [[Projects/MoveToGit/StepsToMove]]&lt;br /&gt;
* [[Contribute/Get a SVN Account]]&lt;br /&gt;
* [[Contribute/First Steps with your KDE SVN Account]]&lt;br /&gt;
&lt;br /&gt;
There are also numerous other pages referring to &amp;quot;the KDE SVN/subversion repositories&amp;quot; which should be replaced with the generic &amp;quot;KDE code repositories&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
There are also numerous translated pages which will need to be updated once the original pages are completed.&lt;br /&gt;
&lt;br /&gt;
=== New Page Structure ===&lt;br /&gt;
&lt;br /&gt;
* [[Getting_Started]]&lt;br /&gt;
* [[Getting_Started/Build]]&lt;br /&gt;
* [[Getting_Started/Build/Environment]]&lt;br /&gt;
* [[Getting_Started/Build/Requirements]]&lt;br /&gt;
* [[Getting_Started/Build/Qt]]&lt;br /&gt;
* [[Getting_Started/Build/KdeSupport]]&lt;br /&gt;
* [[Getting_Started/Build/Windows]]&lt;br /&gt;
* [[Getting_Started/Build/Mac_OS_X]]&lt;br /&gt;
* [[Getting_Started/Run]]&lt;br /&gt;
* [[Getting_Started/Run/Shell]]&lt;br /&gt;
* [[Getting_Started/Run/Nested_Session]]&lt;br /&gt;
* [[Getting_Started/Run/Full_Session]]&lt;br /&gt;
&lt;br /&gt;
=== For Deletion ===&lt;br /&gt;
&lt;br /&gt;
The following pages can now be deleted and/or redirected:&lt;br /&gt;
* [[Development/Tutorials/Git/Pushing]]&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Archive:Development/Tutorials/Git</id>
		<title>Archive:Development/Tutorials/Git</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Archive:Development/Tutorials/Git"/>
				<updated>2011-04-28T19:51:59Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{warning|This page is yet to be reviewed for changes required by the migration to Git.  Information and commands on this page may no longer be valid and should be used with care. Please see the [[Development/Git|KDE Git hub page]] for more details. }}&lt;br /&gt;
&lt;br /&gt;
KDE is currently [[Projects/MovetoGit|migrating from SVN to Git]]. As of 29 Jan 2011 kde-qt, kdelibs and kdebase are in Git along with many other KDE applications, available at [https://projects.kde.org/projects projects.kde.org].  The remaining KDE modules will be migrated in due course.&lt;br /&gt;
&lt;br /&gt;
Your first resource for details on using Git with KDE should be the [http://community.kde.org/Sysadmin/GitKdeOrgManual git.kde.org manual].&lt;br /&gt;
&lt;br /&gt;
There are many resources available for learning about [http://git-scm.com/ Git]; the techbase pages below provide a kde-specific introduction, based on the most common tasks. After those links is a list of external documentation we've found useful.&lt;br /&gt;
&lt;br /&gt;
===Pages===&lt;br /&gt;
Note: these pages are not complete. help would be appreciated. :) The idea is to provide information in more of a 'recipe' style than 'tutorial': first provide simple commands that people can use Right Now for straightforward tasks, then links to other pages or external git documentation for the tricky things.&lt;br /&gt;
&lt;br /&gt;
Amarok has their own [[Getting_Started/Sources/Amarok_Git_Tutorial|git tutorial]], which has a fair amount of overlap with these git pages (we're copying from them ;)&lt;br /&gt;
&lt;br /&gt;
====Getting Started====&lt;br /&gt;
Many of these links are now outdated or are incomplete, please refer to the [http://community.kde.org/Sysadmin/GitKdeOrgManual git.kde.org manual] as your primary resource.&lt;br /&gt;
&lt;br /&gt;
*[http://community.kde.org/Sysadmin/GitKdeOrgManual git.kde.org manual]&lt;br /&gt;
*[[/kde-qt|Using kde-qt]] (done)&lt;br /&gt;
*[[/git-svn|Using git-svn with kde's svn]] (needs cleanup)&lt;br /&gt;
*[[/Basics|Basic git commands]] (greeneg)&lt;br /&gt;
*Handling common git error and information messages (todo)&lt;br /&gt;
*How to specify git file and directory version numbers (todo)&lt;br /&gt;
*How to organise branches, do comparisons between branches, minimize recompilation when switching branches, ... (todo)&lt;br /&gt;
&lt;br /&gt;
====Intermediate/Advanced====&lt;br /&gt;
*[[/BestPractices|things to avoid / best practices]] (10% done)&lt;br /&gt;
*[[/Intermediate|Taking advantage of git's features]] (20% done)&lt;br /&gt;
*[[/Recipes|useful recipes]]&lt;br /&gt;
&lt;br /&gt;
=== Further Reading ===&lt;br /&gt;
&lt;br /&gt;
If you want to learn more about git, see the following resources:&lt;br /&gt;
*[http://zrusin.blogspot.com/2007/09/git-cheat-sheet.html Illustrated git cheat sheet] - Overview of the most commonly used commands&lt;br /&gt;
*[http://cheat.errtheblog.com/s/git Another git cheat sheet] - Quick reference&lt;br /&gt;
*[http://git.or.cz/course/svn.html git &amp;lt;-&amp;gt; svn crash course] - Maps git commands to svn commands&lt;br /&gt;
*[http://tom.preston-werner.com/2009/05/19/the-git-parable.html The Git Parable] - Essential reading if you want to truly understand git.&lt;br /&gt;
*[http://www-cs-students.stanford.edu/~blynn/gitmagic/ Git Magic] - A good intro to git (in several languages!) &lt;br /&gt;
*[http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html The official tutorial introduction to Git]&lt;br /&gt;
*[http://progit.org/book/ Pro Git] - An easy to understand book on git (CC licensed).&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Archive:Development/Tutorials/Git/KdeOnGit</id>
		<title>Archive:Development/Tutorials/Git/KdeOnGit</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Archive:Development/Tutorials/Git/KdeOnGit"/>
				<updated>2011-04-28T19:51:31Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: Delete the page as discussed on k-c-d.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{warning|This page is obsolete. Proceed to [[Development/Git]]. }}&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git</id>
		<title>Development/Git</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git"/>
				<updated>2011-04-28T19:49:04Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: /* Documentation Changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the hub page for all information about the use of Git by KDE.&lt;br /&gt;
&lt;br /&gt;
This page is a work in progress where all new Git material is being organised.  Most of these sections will eventually be moved to their own pages.  Feel free to add stuff.&lt;br /&gt;
&lt;br /&gt;
== KDE and Git ==&lt;br /&gt;
&lt;br /&gt;
This section provides details on using the KDE Git infrastructure.&lt;br /&gt;
&lt;br /&gt;
A primary resource is still http://community.kde.org/Sysadmin/GitKdeOrgManual&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Configuration ===&lt;br /&gt;
&lt;br /&gt;
How to configure Git for use with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
Please see the [[/Configuration|Git Configuration]] page.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Policies ===&lt;br /&gt;
&lt;br /&gt;
KDE policies on Git.  More generic development policies go elsewhere.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Recipes ===&lt;br /&gt;
&lt;br /&gt;
Short recipes for using Git with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
Please see the [[/Recipes|Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Tutorials ===&lt;br /&gt;
&lt;br /&gt;
More in-depth instructions in using Git.&lt;br /&gt;
&lt;br /&gt;
Please see the outdated [[Development/Tutorials/Git|KDE tutorial]] page which needs major revision.&lt;br /&gt;
&lt;br /&gt;
== External Git Resources ==&lt;br /&gt;
&lt;br /&gt;
Links to useful external sites about Git&lt;br /&gt;
&lt;br /&gt;
=== Official Documentation ===&lt;br /&gt;
&lt;br /&gt;
* http://git-scm.com/documentation&lt;br /&gt;
&lt;br /&gt;
=== Git for SVN Users ===&lt;br /&gt;
&lt;br /&gt;
* http://git-scm.com/course/svn.html&lt;br /&gt;
&lt;br /&gt;
=== Tutorials ===&lt;br /&gt;
&lt;br /&gt;
=== Cheat Sheets ===&lt;br /&gt;
&lt;br /&gt;
* http://cheat.errtheblog.com/s/git&lt;br /&gt;
&lt;br /&gt;
= Documentation Changes =&lt;br /&gt;
&lt;br /&gt;
== KDE Documentation Review ==&lt;br /&gt;
&lt;br /&gt;
=== Existing Pages For Review ===&lt;br /&gt;
&lt;br /&gt;
Existing KDE pages about Git, SVN, and/or building KDE that need to be revised.  When revising pages try to split the generic development and revision control policies separate from Git specific stuff.  Do not refer to &amp;quot;the KDE Git Repository&amp;quot; but instead the &amp;quot;KDE Code Repository&amp;quot;.  Lots of small simple pages that are less daunting to newbies and can be linked to from multiple locations are preferred to massive walls of text.&lt;br /&gt;
&lt;br /&gt;
On community.kde.org:&lt;br /&gt;
* http://community.kde.org/Sysadmin/GitKdeOrgManual&lt;br /&gt;
* http://community.kde.org/20110213_GitWorkflowAgenda&lt;br /&gt;
* http://community.kde.org/20110213_GitWorkflowAgenda/StevesIdea&lt;br /&gt;
&lt;br /&gt;
On techbase.kde.org:&lt;br /&gt;
* [[Getting Started]]&lt;br /&gt;
* [[Getting Started/Build/KDE4]]&lt;br /&gt;
* [[Getting Started/Build/KDE4.x]]&lt;br /&gt;
* [[Getting Started/Build/KDE4/Prerequisites]]&lt;br /&gt;
* [[Getting Started/Build/KDE4/Windows/subversion]]&lt;br /&gt;
* [[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts]]&lt;br /&gt;
* [[Getting_Started/Build/kdesrc-build]]&lt;br /&gt;
* [[Getting Started/Sources/Anonymous SVN]]&lt;br /&gt;
* [[Getting_Started/Sources/Using_Subversion_with_KDE]]&lt;br /&gt;
* [[Getting Started/Sources/Amarok Git Tutorial]]&lt;br /&gt;
* [[Getting_Started/Set_up_KDE_4_for_development]]&lt;br /&gt;
* [[Getting_Started/Using_an_IDE_with_KDE4]]&lt;br /&gt;
* [[Policies/SVN_Commit_Policy]]&lt;br /&gt;
* [[Policies/SVN_Guidelines]]&lt;br /&gt;
* [[Development/Tools]]&lt;br /&gt;
* [[Development/Tutorials/Git]]&lt;br /&gt;
* [[Development/Tutorials/Git/BestPractices]]&lt;br /&gt;
* [[Development/Tutorials/Git/Intermediate]]&lt;br /&gt;
* [[Development/Tutorials/Git/Recipes]]&lt;br /&gt;
* [[Development/Tutorials/Git/Create a patch]]&lt;br /&gt;
* [[Development/Tutorials/Git/git-svn]]&lt;br /&gt;
* [[Development/Tutorials/Git/Basics]]&lt;br /&gt;
* [[Development/Tutorials/Git/KdeOnGit]]&lt;br /&gt;
* [[Development/Tutorials/Git/kde-qt]]&lt;br /&gt;
* [[Development/Tutorials/Git/decoding-git]]&lt;br /&gt;
* [[Projects/rekonq/Git_with_rekonq_HowTo]]&lt;br /&gt;
* [[Projects/Related/Subversion]]&lt;br /&gt;
* [[Contribute/Get a SVN Account]]&lt;br /&gt;
* [[Contribute/First Steps with your KDE SVN Account]]&lt;br /&gt;
&lt;br /&gt;
There are also numerous other pages referring to &amp;quot;the KDE SVN/subversion repositories&amp;quot; which should be replaced with the generic &amp;quot;KDE code repositories&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
There are also numerous translated pages which will need to be updated once the original pages are completed.&lt;br /&gt;
&lt;br /&gt;
=== New Page Structure ===&lt;br /&gt;
&lt;br /&gt;
* [[Getting_Started]]&lt;br /&gt;
* [[Getting_Started/Build]]&lt;br /&gt;
* [[Getting_Started/Build/Environment]]&lt;br /&gt;
* [[Getting_Started/Build/Requirements]]&lt;br /&gt;
* [[Getting_Started/Build/Qt]]&lt;br /&gt;
* [[Getting_Started/Build/KdeSupport]]&lt;br /&gt;
* [[Getting_Started/Build/Windows]]&lt;br /&gt;
* [[Getting_Started/Build/Mac_OS_X]]&lt;br /&gt;
* [[Getting_Started/Run]]&lt;br /&gt;
* [[Getting_Started/Run/Shell]]&lt;br /&gt;
* [[Getting_Started/Run/Nested_Session]]&lt;br /&gt;
* [[Getting_Started/Run/Full_Session]]&lt;br /&gt;
&lt;br /&gt;
=== For Deletion ===&lt;br /&gt;
&lt;br /&gt;
The following pages can now be deleted and/or redirected:&lt;br /&gt;
* [[Development/Tutorials/Git/Pushing]]&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Archive:Development/Tutorials/Git/KdeOnGit</id>
		<title>Archive:Development/Tutorials/Git/KdeOnGit</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Archive:Development/Tutorials/Git/KdeOnGit"/>
				<updated>2011-04-28T19:48:08Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{warning|This page is yet to be reviewed for changes required by the migration to Git.  Information and commands on this page may no longer be valid and should be used with care. Please see the [[Development/Git|KDE Git hub page]] for more details. }}&lt;br /&gt;
&lt;br /&gt;
WARNING!!! This page might be outdated. KDE Amarok and Konversation have moved to projects.kde.org/git.kde.org already.&lt;br /&gt;
&lt;br /&gt;
Currently, Amarok and Konversation are testing out git to help with KDE's migration. There are also one or two kde-related projects that have started on [http://gitorious.org/about gitorious] (although this is *not* recommended yet!)&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
TODO:&lt;br /&gt;
* Explain where to find various kde projects and modules.&lt;br /&gt;
* Explain how to clone them.&lt;br /&gt;
* readonly-use guide&lt;br /&gt;
* contributing:&lt;br /&gt;
&lt;br /&gt;
==How KDE projects on Gitorious.org are set up==&lt;br /&gt;
&lt;br /&gt;
First up, a brief description of the Gitorious.org user and permission model:&lt;br /&gt;
&lt;br /&gt;
* Individual user accounts can be organized into teams. Teams have members and administrators. Administrators can add new members and administrators, as well as edit a team's description.&lt;br /&gt;
&lt;br /&gt;
* A project can be owned by either a team or an individual user account. A project can have one or more repositories.&lt;br /&gt;
&lt;br /&gt;
* The repositories of a project have an owner as well, which can be distinct from the owner of the project. Again the owner can be a team or an individual user account.&lt;br /&gt;
&lt;br /&gt;
* Any individual repository has a list of collaborators. A collaborator can be either a team or an individual user account and can have any combination of these three flags: commit (allows pushing commits), admin (allows editing the repository's description and settings, including the collaborator list) and review (allows processing merge requests).&lt;br /&gt;
&lt;br /&gt;
KDE currently operates the [http://gitorious.org/+kde-developers kde-developers] and [http://gitorious.org/+kde-sysadmin kde-sysadmin] teams on Gitorious.org, as well as several &amp;lt;appname&amp;gt;-reviewers teams (e.g. [http://gitorious.org/+konversation-reviewers konversation-reviewers]). The purpose of each of these can best be illustrated by examining how a KDE project on Gitorious.org has to be set up:&lt;br /&gt;
&lt;br /&gt;
* The project is owned by kde-developers.&lt;br /&gt;
* The project's repositories are owned by kde-developers.&lt;br /&gt;
* The repositories belonging to the project have the 'kde-developers' team as a collaborator with the and only the 'commit' flag.&lt;br /&gt;
* The repositories also have 'kde-sysadmin' as a collaborator, with the and only the 'admin' flag.&lt;br /&gt;
* And they have an '&amp;lt;appname&amp;gt;-reviewers' team as a collaborator with the and only the 'review' flag.&lt;br /&gt;
* They also optionally have one or more key developers of the project as collaborators with the and only the 'admin' flag.&lt;br /&gt;
&lt;br /&gt;
Commit access is thus handled exclusively via kde-developers, and any member of kde-developers can commit to any KDE repository. Getting into kde-developers is done by [https://bugs.kde.org/enter_sysadmin_request.cgi?component=gitorious filing a KDE sysadmin request against the gitorious component], which is then implemented by one of the administrators of the kde-developers team.&lt;br /&gt;
&lt;br /&gt;
The kde-sysadmin team exists for the purpose of making sure KDE's sysadmin squad can edit all KDE repositories on Gitorious.org, to fix issues or help people in a bind.&lt;br /&gt;
&lt;br /&gt;
The '&amp;lt;appname&amp;gt;-reviewers' teams were originally created to be able to remove the 'review' flag from kde-developers for all the repositories, because otherwise every kde-developers member got email notifications about every merge request for every project. So someone with no interest in Amarok or Konversation would still get MR mail about them. Project-specific reviewers teams solve that routing problem. The reviewers teams usually have all the core developers from a project as members, and are administrated by one or more key developers.&lt;br /&gt;
&lt;br /&gt;
Now, about those optionally-added key developers with the 'admin' flag: Pushing a tag into a repository requires being allowed to do a &amp;quot;force push&amp;quot;. Force pushing can be enabled/disabled on a per-repository basis on Gitorious.org by anyone who has the 'admin' flag for a repository. As outlined above, this currently means every member of the kde-sysadmin team - as well as one or more key developers from a given project that have been added individually with the 'admin' flag. Thus the the main motivation for this is to allow projects to push tags without having to involve KDE's sysadmin team.&lt;br /&gt;
&lt;br /&gt;
=== Enable post-update hooks  ===&lt;br /&gt;
&lt;br /&gt;
The post-update hooks enable features like the CCMAIL:, BUG: filters and emails the kde-commits mailing list. &lt;br /&gt;
&lt;br /&gt;
The [http://gitorious.org/remotehook remote hooks] repo has the scripts that set all this up. However just send the old SVN url and the new git:// url to Ian Monroe (eean in #kde-git) and he will set it up on the Amarok server.&lt;br /&gt;
&lt;br /&gt;
==Projects already on Gitorious==&lt;br /&gt;
&lt;br /&gt;
* [http://gitorious.org/amarok Amarok] - KDE's favorite music player.&lt;br /&gt;
* [http://gitorious.org/konversation Konversation] - an IRC client for KDE.&lt;br /&gt;
* [http://gitorious.org/+kde-developers/qt/kde-qt kde-qt] - KDE’s copy of Qt, containing the latest release, plus patches for Qt that haven’t been accepted (yet) by Qt Software.&lt;br /&gt;
FIXME: Is this a KDE project? Why are permissions not set for kde-developers?&lt;br /&gt;
* [http://www.gitorious.org/project-silk Project Silk] - We've been working with gitorious as an experiment.&lt;br /&gt;
* [http://www.gitorious.org/gluon Gluon  ] - Gluon project, a game library which started on gitorious.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://gitorious.org/+kde-developers has a more up-to-date list of kde-run projects. However, that list includes projects that don't use kde frameworks (like KDE developers' personal projects), and experiments, and isn't sorted in any way. We plan to have a better directory of kde-related projects once git.kde.org is up.&lt;br /&gt;
&lt;br /&gt;
== Setting up your KDE project to start developing in Gitorious ==&lt;br /&gt;
&lt;br /&gt;
Ok, consider that things are ready to move your own project to Gitorious and you wanna know what you have to do. Let's start doing it together.&lt;br /&gt;
&lt;br /&gt;
First of all, you should subscribe to Gitorious and move there your project. This will not be explained here... :)&lt;br /&gt;
&lt;br /&gt;
Now you need to ask KDE sysadmins from [https://bugs.kde.org/enter_sysadmin_request.cgi here] to include your account in the +kde-developers group.&lt;br /&gt;
Give a couple of days to sysadmins to value your request and (hopefully) accept it. &lt;br /&gt;
Now you have one project in Gitorious (and you own it) created with an account included in kde-developers group.&lt;br /&gt;
&lt;br /&gt;
Next step is moving ownership of your project to the group. In this way, every kde developer will be enabled to collaborate to your project. :)&lt;br /&gt;
To do this, mail Gitorious support [mailto:support@gitorious.org team] asking to move yourproject ownership to the kde-developers group.&lt;br /&gt;
Given that, you have to ask again KDE sysadmin to properly set up your project. Just read about that, didn't you?&lt;br /&gt;
&lt;br /&gt;
Now your repository is quite ready. You need still to do just something:&lt;br /&gt;
&lt;br /&gt;
* ask Albert Astals Cid to point the scripty bot to your git repo (He'll ask you your main branch name and your repo push url)&lt;br /&gt;
* ask Ian Monroe to add the post commit hooks to your repo, to let things as the keyword BUG: and CCBUG: work&lt;br /&gt;
* ask (again) the KDE sysadmins to get integration into lxr.kde.org working&lt;br /&gt;
* ask Allen Winter to get integration into EBN working&lt;br /&gt;
(note: can I include their kde mail here?)&lt;br /&gt;
&lt;br /&gt;
That's all! In a couple of days your git repo will be ready.&lt;br /&gt;
&lt;br /&gt;
Happy hacking with KDE!&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Archive:Development/Tutorials/Git</id>
		<title>Archive:Development/Tutorials/Git</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Archive:Development/Tutorials/Git"/>
				<updated>2011-04-28T19:47:38Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: Remove the link to the obsolete Pushing page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{warning|This page is yet to be reviewed for changes required by the migration to Git.  Information and commands on this page may no longer be valid and should be used with care. Please see the [[Development/Git|KDE Git hub page]] for more details. }}&lt;br /&gt;
&lt;br /&gt;
KDE is currently [[Projects/MovetoGit|migrating from SVN to Git]]. As of 29 Jan 2011 kde-qt, kdelibs and kdebase are in Git along with many other KDE applications, available at [https://projects.kde.org/projects projects.kde.org].  The remaining KDE modules will be migrated in due course.&lt;br /&gt;
&lt;br /&gt;
Your first resource for details on using Git with KDE should be the [http://community.kde.org/Sysadmin/GitKdeOrgManual git.kde.org manual].&lt;br /&gt;
&lt;br /&gt;
There are many resources available for learning about [http://git-scm.com/ Git]; the techbase pages below provide a kde-specific introduction, based on the most common tasks. After those links is a list of external documentation we've found useful.&lt;br /&gt;
&lt;br /&gt;
===Pages===&lt;br /&gt;
Note: these pages are not complete. help would be appreciated. :) The idea is to provide information in more of a 'recipe' style than 'tutorial': first provide simple commands that people can use Right Now for straightforward tasks, then links to other pages or external git documentation for the tricky things.&lt;br /&gt;
&lt;br /&gt;
Amarok has their own [[Getting_Started/Sources/Amarok_Git_Tutorial|git tutorial]], which has a fair amount of overlap with these git pages (we're copying from them ;)&lt;br /&gt;
&lt;br /&gt;
====Getting Started====&lt;br /&gt;
Many of these links are now outdated or are incomplete, please refer to the [http://community.kde.org/Sysadmin/GitKdeOrgManual git.kde.org manual] as your primary resource.&lt;br /&gt;
&lt;br /&gt;
*[http://community.kde.org/Sysadmin/GitKdeOrgManual git.kde.org manual]&lt;br /&gt;
*[[/kde-qt|Using kde-qt]] (done)&lt;br /&gt;
*[[/git-svn|Using git-svn with kde's svn]] (needs cleanup)&lt;br /&gt;
*[[/KdeOnGit|Accessing or setting up a KDE project on Gitorious.org]] (25% done)&lt;br /&gt;
*[[/Basics|Basic git commands]] (greeneg)&lt;br /&gt;
*Handling common git error and information messages (todo)&lt;br /&gt;
*How to specify git file and directory version numbers (todo)&lt;br /&gt;
*How to organise branches, do comparisons between branches, minimize recompilation when switching branches, ... (todo)&lt;br /&gt;
&lt;br /&gt;
====Intermediate/Advanced====&lt;br /&gt;
*[[/BestPractices|things to avoid / best practices]] (10% done)&lt;br /&gt;
*[[/Intermediate|Taking advantage of git's features]] (20% done)&lt;br /&gt;
*[[/Recipes|useful recipes]]&lt;br /&gt;
&lt;br /&gt;
=== Further Reading ===&lt;br /&gt;
&lt;br /&gt;
If you want to learn more about git, see the following resources:&lt;br /&gt;
*[http://zrusin.blogspot.com/2007/09/git-cheat-sheet.html Illustrated git cheat sheet] - Overview of the most commonly used commands&lt;br /&gt;
*[http://cheat.errtheblog.com/s/git Another git cheat sheet] - Quick reference&lt;br /&gt;
*[http://git.or.cz/course/svn.html git &amp;lt;-&amp;gt; svn crash course] - Maps git commands to svn commands&lt;br /&gt;
*[http://tom.preston-werner.com/2009/05/19/the-git-parable.html The Git Parable] - Essential reading if you want to truly understand git.&lt;br /&gt;
*[http://www-cs-students.stanford.edu/~blynn/gitmagic/ Git Magic] - A good intro to git (in several languages!) &lt;br /&gt;
*[http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html The official tutorial introduction to Git]&lt;br /&gt;
*[http://progit.org/book/ Pro Git] - An easy to understand book on git (CC licensed).&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Archive:Development/Tutorials/Git/Pushing</id>
		<title>Archive:Development/Tutorials/Git/Pushing</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Archive:Development/Tutorials/Git/Pushing"/>
				<updated>2011-04-28T19:46:31Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: As discussed on k-c-d, delete this page.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{warning|This page is obsolete. Proceed to [[Development/Git]]. }}&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/CMake/DashboardBuilds</id>
		<title>Development/CMake/DashboardBuilds</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/CMake/DashboardBuilds"/>
				<updated>2011-04-16T12:12:55Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= What is a dashboard ? =&lt;br /&gt;
&lt;br /&gt;
A dashboard can show the results of Nightly and Continuous builds of a software package. This includes warnings and errors from the configure and build process as well as the results of the executed tests belonging to the software package. This is not only displayed for one machine, but ideally for all supported operating systems such results are submitted, also with different configurations, e.g. one for a minimal system with most optional features disabled and one for a full featured system.&lt;br /&gt;
&lt;br /&gt;
For KDE [http://www.cdash.org CDash-based] dashboards are set up at http://my.cdash.org, a service provided by [http://www.kitware.com Kitware]. CDash only displays the results, the actual building and testing is done decentral on other machines.&lt;br /&gt;
When failures occur, like build errors or failed tests, notification emails can be sent by CDash.&lt;br /&gt;
So by building and testing KDE each day on the supported platforms and collecting the results in a central place, we can make sure that KDE stays compiling and also working on all supported platforms.&lt;br /&gt;
&lt;br /&gt;
You can help too to increase the quality by setting up a Nightly build and submitting the results to http://my.cdash.org.&lt;br /&gt;
&lt;br /&gt;
= For which modules/packages are there dashboards ?=&lt;br /&gt;
&lt;br /&gt;
Currently there are dashboards set up for all modules of KDE, and one for kdesupport. There are not yet dashboards for extragear.&lt;br /&gt;
If you are interested in setting dashboards up for these too, just go to http://my.cdash.org and do it, or ask on the kde-buildsystem mailing list if you have any questions.&lt;br /&gt;
&lt;br /&gt;
So, here comes the list of currently existing KDE dashboards:&lt;br /&gt;
&lt;br /&gt;
* kdesupport&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdesupport kdesupport]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=automoc4 automoc4]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=akonadi Akonadi]&lt;br /&gt;
&lt;br /&gt;
* KDE&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeaccessibility kdeaccessibility]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeadmin kdeadmin]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeartwork kdeartwork]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebase-apps kdebase/apps]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebase-runtime kdebase/runtime]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebase-workspace kdebase/workspace]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebindings kdebindings]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeedu kdeedu]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeexamples kdeexamples]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdegames kdegames]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdegraphics kdegraphics]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdelibs kdelibs]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdemultimedia kdemultimedia]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdenetwork kdenetwork]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdepim kdepim]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdepimlibs kdepimlibs]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeplasma-addons kdeplasma-addons]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdesdk kdesdk]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdetoys kdetoys]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeutils kdeutils]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdewebdev kdewebdev]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=KOffice KOffice]&lt;br /&gt;
&lt;br /&gt;
= How to set up a Nightly build =&lt;br /&gt;
&lt;br /&gt;
Setting up a Nightly build and this way contributing to keep KDE working is not hard.&lt;br /&gt;
&lt;br /&gt;
You need:&lt;br /&gt;
* A computer. It should be running the Nightly build ''every day'', at some time after 20:00 CET (for the Nightly builds the state of the repository at 20:00 CET is used).&lt;br /&gt;
* A KDE development environment installed on this computer, i.e. &lt;br /&gt;
** CMake &amp;gt;= 2.6.2, &amp;gt;= 2.8.0 is recommended for the Nightly builds (better warning and error reporting)&lt;br /&gt;
** Compiler etc.&lt;br /&gt;
** Subversion client&lt;br /&gt;
** Qt4 and the other required libraries for building KDE4&lt;br /&gt;
* Some time to maintain the Nightly build, i.e. to upgrade the required libraries, e.g. Qt4 when necessary, to install new required libraries etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Under Unix ==&lt;br /&gt;
&lt;br /&gt;
This applies to Linux, FreeBSD and other Unixes. It should also apply to Mac OSX, but this hasn't been tested yet.&lt;br /&gt;
You can figure out how to set up the Nightly builds yourself, but we have also something prepared to make it really easy. Let's assume you want to contribute a Nightly build for the kdeutils modules. That's how you do it:&lt;br /&gt;
&lt;br /&gt;
* Go to http://my.cdash.org and register&lt;br /&gt;
* Once registered, subscribe to the kdeutils project&lt;br /&gt;
* Checkout trunk/quality/nightly-support/ from KDE svn. There, in the KDE/ subdirectory is a ctest-script ready to use for each KDE module.&lt;br /&gt;
* Write a shell script which sets the CMAKE_PREFIX_PATH environment variable so that CMake will find everything required and then execute ctest with the KDEUtilsNightly.cmake script. This will look something like the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
  CMAKE_PREFIX_PATH=/opt/kde-qt:/opt/phonon:/what/ever/else/you/need&lt;br /&gt;
  ctest -V -S /where/you/checked/out/KDE/KDEUtilsNightly.cmake,KDE_CTEST_BUILD_SUFFIX=gcc-4.2.3&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That's it basically. The -V option for ctest makes ctest verbose, so you can see what it's doing. The KDE_CTEST_BUILD_SUFFIX will be appended to the buildname displayed at http://my.cdash.org/index.php?project=kdeutils. Setting it to the used compiler is a sensible choice.&lt;br /&gt;
&lt;br /&gt;
* Set up a cron job which runs this script every day:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
  $ crontab -e&lt;br /&gt;
  00 22 * * * /where/is/my/script/run_kdeutils_nightly.sh&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That's it. Probably you first want to run the script manually a few times until everything works, but after that you can just have it executed via cron.&lt;br /&gt;
The next day you should then see your results on http://my.cdash.org.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to contribute Nightly builds for more than one KDE module, it gets a little bit more complicated. You have to make sure that the modules are built in the right order, and that the modules are installed correctly, if other modules depend on them. For examples see kdesdk/cmake/nightly-support/example-scripts/, e.g. [http://websvn.kde.org/*checkout*/trunk/KDE/kdesdk/cmake/nightly-support/example-scripts/Nightlys-2.6.2 Nightlys-2.6.2] is the shell script I use on my machine to build (and install where necessary) all KDE modules on my Linux machine.&lt;br /&gt;
&lt;br /&gt;
== Under Windows ==&lt;br /&gt;
&lt;br /&gt;
Nobody has done this yet for KDE AFAIK, but it should be quite similar. If you intend to do this, please contact the kde-buildsystem mailing list, we will do our best to get it working quickly.&lt;br /&gt;
&lt;br /&gt;
= How to get notification emails =&lt;br /&gt;
&lt;br /&gt;
So, you don't want to/cannot submit a Nightly build, but you want to receive notification emails from CDash if the compilation of one of the projects fails or if test cases fail.&lt;br /&gt;
&lt;br /&gt;
If that's the case, you need to &lt;br /&gt;
* Go to http://my.cdash.org and register. You will get a confirmation email.&lt;br /&gt;
* Once you have a valid login at http://my.cdash.org, go there&lt;br /&gt;
** Login&lt;br /&gt;
** Click the &amp;quot;My CDash&amp;quot; link in the top left corner&lt;br /&gt;
** Then, click &amp;quot;Show public projects&amp;quot;&lt;br /&gt;
** Search the project you are interested in and click &amp;quot;Subscribe&amp;quot;&lt;br /&gt;
** Go to the &amp;quot;Email preference&amp;quot; and &amp;quot;Email category&amp;quot; tabs and configure what emails you want to receive.&lt;br /&gt;
&lt;br /&gt;
That's all. Now you should receive notification emails whenever problems in this project occur.&lt;br /&gt;
&lt;br /&gt;
= TODO =&lt;br /&gt;
&lt;br /&gt;
== More fine grained email notifications ==&lt;br /&gt;
&lt;br /&gt;
In order to be really useful for KDE, we need more fine grained email notifications. CDash supports &amp;quot;subprojects&amp;quot;, and users can register to get emails just for subprojects. Setting up these subprojects currently needs quite some manual work: http://www.kitware.com/products/html/CDashSubprojects.html&lt;br /&gt;
&lt;br /&gt;
It would be nice to have a CMake command which takes a list of project()-names and generates the CDash-subproject files, with correct dependencies etc. for them. This needs work in CMake itself.&lt;br /&gt;
&lt;br /&gt;
== Extended viewing methods in CDash ==&lt;br /&gt;
&lt;br /&gt;
Currently in CDash you can see everything for one project at once.&lt;br /&gt;
For KDE we need an additional mode: see everything for one operating system or submitted by one host, also to multiple projects, at once. This way e.g. our Windows contributors would have a quick way to get an overview how KDE is doing on Windows today. This needs work in CDash.&lt;br /&gt;
&lt;br /&gt;
== Dependent builds ==&lt;br /&gt;
&lt;br /&gt;
Building of some modules should be triggered when other modules have changed, e.g. when kdelibs has been built all other modules should be built. This needs work on the CTest-scripts which drive the Nightly builds.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= How to get help=&lt;br /&gt;
&lt;br /&gt;
If you have any questions regarding Nightly or Continuous builds for KDE or about CDash or CTest in general, please ask on the [https://mail.kde.org/mailman/listinfo/kde-buildsystem kde-buildsystem] or [https://mail.kde.org/mailman/listinfo/kde-core-devel kde-core-devel] KDE mailing lists, or also on the [http://public.kitware.com/cgi-bin/mailman/listinfo/cdash CDash mailing list].&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/CMake_KDE_4_5</id>
		<title>Development/CMake KDE 4 5</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/CMake_KDE_4_5"/>
				<updated>2010-08-15T19:37:43Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: /* Other minor changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Changes in the buildsystem from KDE 4.4 to KDE 4.5=&lt;br /&gt;
&lt;br /&gt;
Starting with KDE 4.5, CMake &amp;gt;= 2.6.4 is required.&lt;br /&gt;
&lt;br /&gt;
==Incompatible Changes==&lt;br /&gt;
&lt;br /&gt;
We are not aware of any incompatible changes between KDE 4.4 and 4.5.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Other Changes==&lt;br /&gt;
&lt;br /&gt;
===Required CMake version===&lt;br /&gt;
&lt;br /&gt;
Starting with KDE 4.5, CMake &amp;gt;= 2.6.4 is required (KDE 4.2 to 4.4 required 2.6.2).&lt;br /&gt;
&lt;br /&gt;
This change brings us mainly two new features:&lt;br /&gt;
* The find_package() command now additionally&lt;br /&gt;
searches in lib/cmake/Foo/ for installed FooConfig.cmake files, while CMake&lt;br /&gt;
2.6.0..2.6.2 only look in lib/Foo/cmake/. With CMake &amp;lt; 2.6.3 manual work was required to be able to find these files, now with CMake 2.6.4 it just works and we are compatible to all other CMake-based packages which install their files in such locations.&lt;br /&gt;
* You can now use parenthesis in if()-statements, so you can do now e.g.&lt;br /&gt;
if(FOO AND (BAR OR BLAH))&lt;br /&gt;
&lt;br /&gt;
===Commit Policy for kdelibs/cmake/modules/===&lt;br /&gt;
&lt;br /&gt;
The [[Policies/CMake_Commit_Policy|commit policy]] introduced during the 4.3 development cycle is still active and must be followed.&lt;br /&gt;
&lt;br /&gt;
===New variable KDE_PLATFORM_PROFILE===&lt;br /&gt;
&lt;br /&gt;
The new variable KDE_PLATFORM_PROFILE can be used to test for which profile&lt;br /&gt;
KDE is currently built for. Possible values are &amp;quot;Desktop&amp;quot;, &amp;quot;Tablet&amp;quot; and &amp;quot;Mobile&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
===New libraries: kemoticons, kidletime, kcmutils and kprintutils===&lt;br /&gt;
&lt;br /&gt;
With KDE 4.5 3 four new libraries were added to kdelibs: the kemoticons library, the kidletime library, the kcmutils library and the kprintutils library. These libraries come with their associated variables. So if you want to link against these libraries, use ${KDE4_KEMOTICONS_LIBS}, ${KDE4_KIDLETIME_LIBS}, ${KDE4_KCMUTILS_LIBS} and ${KDE4_KPRINTUTILS_LIBS} respectively. They don't require an additional include directory.&lt;br /&gt;
&lt;br /&gt;
===Improved RPATH settings===&lt;br /&gt;
&lt;br /&gt;
In the previous releases of KDE 4, the library installation directory was always added to the RPATH of libraries and executables.&lt;br /&gt;
With KDE 4.5 this is now only done if the library installation directory is not one of the system default library directories.&lt;br /&gt;
This means that e.g. /usr/lib is not added anymore to the RPATH.&lt;br /&gt;
&lt;br /&gt;
===Support for QtDeclarative===&lt;br /&gt;
&lt;br /&gt;
Support for the new QtDeclarative module has been added to FindQt4.cmake. To use it, you can use the new variables QT_QTDECLARATIVE_LIBRARY, QT_QTDECLARATIVE_INCLUDE_DIR, QT_QTDECLARATIVE_FOUND and QT_USE_QTDECLARATIVE.&lt;br /&gt;
&lt;br /&gt;
===Other minor changes===&lt;br /&gt;
&lt;br /&gt;
* A cache variable KDE4_SERIALIZE_TOOL has been added to FindKDE4Internal.cmake. It is empty by default, &lt;br /&gt;
but you can set it to a tool to serialize resource-intensive commands in parallel builds, e.g. icecc when using icecream .&lt;br /&gt;
&lt;br /&gt;
* Some improvements to make cross compiling KDE easier were committed to FindKDE4Internal.cmake, but we are still not ready for cross compiling.&lt;br /&gt;
&lt;br /&gt;
* The documentation was improved, e.g. the macro KDE4_ADD_APP_ICON() was undocumented before.&lt;br /&gt;
&lt;br /&gt;
==New Modules==&lt;br /&gt;
&lt;br /&gt;
Some completely new installed modules have been added during this cycle:&lt;br /&gt;
&lt;br /&gt;
* FindDBusMenuQt.cmake&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also added were FindDocBookXML.cmake and FindDocBookXSL.cmake, but both are used only internally inside kdelibs and both are not installed.&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/CMake_KDE_4_5</id>
		<title>Development/CMake KDE 4 5</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/CMake_KDE_4_5"/>
				<updated>2010-08-15T19:36:13Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: /* Required CMake version */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Changes in the buildsystem from KDE 4.4 to KDE 4.5=&lt;br /&gt;
&lt;br /&gt;
Starting with KDE 4.5, CMake &amp;gt;= 2.6.4 is required.&lt;br /&gt;
&lt;br /&gt;
==Incompatible Changes==&lt;br /&gt;
&lt;br /&gt;
We are not aware of any incompatible changes between KDE 4.4 and 4.5.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Other Changes==&lt;br /&gt;
&lt;br /&gt;
===Required CMake version===&lt;br /&gt;
&lt;br /&gt;
Starting with KDE 4.5, CMake &amp;gt;= 2.6.4 is required (KDE 4.2 to 4.4 required 2.6.2).&lt;br /&gt;
&lt;br /&gt;
This change brings us mainly two new features:&lt;br /&gt;
* The find_package() command now additionally&lt;br /&gt;
searches in lib/cmake/Foo/ for installed FooConfig.cmake files, while CMake&lt;br /&gt;
2.6.0..2.6.2 only look in lib/Foo/cmake/. With CMake &amp;lt; 2.6.3 manual work was required to be able to find these files, now with CMake 2.6.4 it just works and we are compatible to all other CMake-based packages which install their files in such locations.&lt;br /&gt;
* You can now use parenthesis in if()-statements, so you can do now e.g.&lt;br /&gt;
if(FOO AND (BAR OR BLAH))&lt;br /&gt;
&lt;br /&gt;
===Commit Policy for kdelibs/cmake/modules/===&lt;br /&gt;
&lt;br /&gt;
The [[Policies/CMake_Commit_Policy|commit policy]] introduced during the 4.3 development cycle is still active and must be followed.&lt;br /&gt;
&lt;br /&gt;
===New variable KDE_PLATFORM_PROFILE===&lt;br /&gt;
&lt;br /&gt;
The new variable KDE_PLATFORM_PROFILE can be used to test for which profile&lt;br /&gt;
KDE is currently built for. Possible values are &amp;quot;Desktop&amp;quot;, &amp;quot;Tablet&amp;quot; and &amp;quot;Mobile&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
===New libraries: kemoticons, kidletime, kcmutils and kprintutils===&lt;br /&gt;
&lt;br /&gt;
With KDE 4.5 3 four new libraries were added to kdelibs: the kemoticons library, the kidletime library, the kcmutils library and the kprintutils library. These libraries come with their associated variables. So if you want to link against these libraries, use ${KDE4_KEMOTICONS_LIBS}, ${KDE4_KIDLETIME_LIBS}, ${KDE4_KCMUTILS_LIBS} and ${KDE4_KPRINTUTILS_LIBS} respectively. They don't require an additional include directory.&lt;br /&gt;
&lt;br /&gt;
===Improved RPATH settings===&lt;br /&gt;
&lt;br /&gt;
In the previous releases of KDE 4, the library installation directory was always added to the RPATH of libraries and executables.&lt;br /&gt;
With KDE 4.5 this is now only done if the library installation directory is not one of the system default library directories.&lt;br /&gt;
This means that e.g. /usr/lib is not added anymore to the RPATH.&lt;br /&gt;
&lt;br /&gt;
===Support for QtDeclarative===&lt;br /&gt;
&lt;br /&gt;
Support for the new QtDeclarative module has been added to FindQt4.cmake. To use it, you can use the new variables QT_QTDECLARATIVE_LIBRARY, QT_QTDECLARATIVE_INCLUDE_DIR, QT_QTDECLARATIVE_FOUND and QT_USE_QTDECLARATIVE.&lt;br /&gt;
&lt;br /&gt;
===Other minor changes===&lt;br /&gt;
&lt;br /&gt;
* A cache variable KDE4_SERIALIZE_TOOL has been added to FindKDE4Internal.cmake. It is empty by default, &lt;br /&gt;
but you can set it to a tool to serialize resource-intensive commands in parallel builds.&lt;br /&gt;
&lt;br /&gt;
* Some improvements to make cross compiling KDE easier were committed to FindKDE4Internal.cmake, but we are still not ready for cross compiling.&lt;br /&gt;
&lt;br /&gt;
* The documentation was improved, e.g. the macro KDE4_ADD_APP_ICON() was undocumented before.&lt;br /&gt;
&lt;br /&gt;
==New Modules==&lt;br /&gt;
&lt;br /&gt;
Some completely new installed modules have been added during this cycle:&lt;br /&gt;
&lt;br /&gt;
* FindDBusMenuQt.cmake&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also added were FindDocBookXML.cmake and FindDocBookXSL.cmake, but both are used only internally inside kdelibs and both are not installed.&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/CMake_KDE_4_5</id>
		<title>Development/CMake KDE 4 5</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/CMake_KDE_4_5"/>
				<updated>2010-08-15T19:35:38Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Changes in the buildsystem from KDE 4.4 to KDE 4.5=&lt;br /&gt;
&lt;br /&gt;
Starting with KDE 4.5, CMake &amp;gt;= 2.6.4 is required.&lt;br /&gt;
&lt;br /&gt;
==Incompatible Changes==&lt;br /&gt;
&lt;br /&gt;
We are not aware of any incompatible changes between KDE 4.4 and 4.5.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Other Changes==&lt;br /&gt;
&lt;br /&gt;
===Required CMake version===&lt;br /&gt;
&lt;br /&gt;
Starting with KDE 4.5, CMake &amp;gt;= 2.6.4 is required (KDE 4.2 to 4.4 required 2.6.2).&lt;br /&gt;
&lt;br /&gt;
This change brings us mainly two new features:&lt;br /&gt;
 * The find_package() command now additionally&lt;br /&gt;
searches in lib/cmake/Foo/ for installed FooConfig.cmake files, while CMake&lt;br /&gt;
2.6.0..2.6.2 only look in lib/Foo/cmake/. With CMake &amp;lt; 2.6.3 manual work was required to be able to find these files, now with CMake 2.6.4 it just works and we are compatible to all other CMake-based packages which install their files in such locations.&lt;br /&gt;
 * You can now use parenthesis in if()-statements, so you can do now e.g.&lt;br /&gt;
if(FOO AND (BAR OR BLAH)) &lt;br /&gt;
&lt;br /&gt;
===Commit Policy for kdelibs/cmake/modules/===&lt;br /&gt;
&lt;br /&gt;
The [[Policies/CMake_Commit_Policy|commit policy]] introduced during the 4.3 development cycle is still active and must be followed.&lt;br /&gt;
&lt;br /&gt;
===New variable KDE_PLATFORM_PROFILE===&lt;br /&gt;
&lt;br /&gt;
The new variable KDE_PLATFORM_PROFILE can be used to test for which profile&lt;br /&gt;
KDE is currently built for. Possible values are &amp;quot;Desktop&amp;quot;, &amp;quot;Tablet&amp;quot; and &amp;quot;Mobile&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
===New libraries: kemoticons, kidletime, kcmutils and kprintutils===&lt;br /&gt;
&lt;br /&gt;
With KDE 4.5 3 four new libraries were added to kdelibs: the kemoticons library, the kidletime library, the kcmutils library and the kprintutils library. These libraries come with their associated variables. So if you want to link against these libraries, use ${KDE4_KEMOTICONS_LIBS}, ${KDE4_KIDLETIME_LIBS}, ${KDE4_KCMUTILS_LIBS} and ${KDE4_KPRINTUTILS_LIBS} respectively. They don't require an additional include directory.&lt;br /&gt;
&lt;br /&gt;
===Improved RPATH settings===&lt;br /&gt;
&lt;br /&gt;
In the previous releases of KDE 4, the library installation directory was always added to the RPATH of libraries and executables.&lt;br /&gt;
With KDE 4.5 this is now only done if the library installation directory is not one of the system default library directories.&lt;br /&gt;
This means that e.g. /usr/lib is not added anymore to the RPATH.&lt;br /&gt;
&lt;br /&gt;
===Support for QtDeclarative===&lt;br /&gt;
&lt;br /&gt;
Support for the new QtDeclarative module has been added to FindQt4.cmake. To use it, you can use the new variables QT_QTDECLARATIVE_LIBRARY, QT_QTDECLARATIVE_INCLUDE_DIR, QT_QTDECLARATIVE_FOUND and QT_USE_QTDECLARATIVE.&lt;br /&gt;
&lt;br /&gt;
===Other minor changes===&lt;br /&gt;
&lt;br /&gt;
* A cache variable KDE4_SERIALIZE_TOOL has been added to FindKDE4Internal.cmake. It is empty by default, &lt;br /&gt;
but you can set it to a tool to serialize resource-intensive commands in parallel builds.&lt;br /&gt;
&lt;br /&gt;
* Some improvements to make cross compiling KDE easier were committed to FindKDE4Internal.cmake, but we are still not ready for cross compiling.&lt;br /&gt;
&lt;br /&gt;
* The documentation was improved, e.g. the macro KDE4_ADD_APP_ICON() was undocumented before.&lt;br /&gt;
&lt;br /&gt;
==New Modules==&lt;br /&gt;
&lt;br /&gt;
Some completely new installed modules have been added during this cycle:&lt;br /&gt;
&lt;br /&gt;
* FindDBusMenuQt.cmake&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also added were FindDocBookXML.cmake and FindDocBookXSL.cmake, but both are used only internally inside kdelibs and both are not installed.&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/CMake_KDE_4_5</id>
		<title>Development/CMake KDE 4 5</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/CMake_KDE_4_5"/>
				<updated>2010-08-15T19:27:15Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Changes in the buildsystem from KDE 4.4 to KDE 4.5=&lt;br /&gt;
&lt;br /&gt;
Starting with KDE 4.5, CMake &amp;gt;= 2.6.4 is required.&lt;br /&gt;
&lt;br /&gt;
==Incompatible Changes==&lt;br /&gt;
&lt;br /&gt;
===FindQt4.cmake: Imported Targets for the libraries===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Other Changes==&lt;br /&gt;
&lt;br /&gt;
===Required CMake version===&lt;br /&gt;
&lt;br /&gt;
Starting with KDE 4.5, CMake &amp;gt;= 2.6.4 is required (KDE 4.2 to 4.4 required 2.6.2).&lt;br /&gt;
&lt;br /&gt;
===Commit Policy for kdelibs/cmake/modules/===&lt;br /&gt;
&lt;br /&gt;
The [[Policies/CMake_Commit_Policy|commit policy]] introduced during the 4.3 development cycle is still active and must be followed.&lt;br /&gt;
&lt;br /&gt;
===Support for QtDeclarative===&lt;br /&gt;
&lt;br /&gt;
Support for the new QtDeclarative module has been added to FindQt4.cmake. To use it, you can use the new variables QT_QTDECLARATIVE_LIBRARY, QT_QTDECLARATIVE_INCLUDE_DIR, QT_QTDECLARATIVE_FOUND and QT_USE_QTDECLARATIVE.&lt;br /&gt;
&lt;br /&gt;
===New libraries: kemoticons, kidletime, kcmutils and kprintutils===&lt;br /&gt;
&lt;br /&gt;
With KDE 4.5 3 four new libraries were added to kdelibs: the kemoticons library, the kidletime library, the kcmutils library and the kprintutils library. These libraries come with their associated variables. So if you want to link against these libraries, use ${KDE4_KEMOTICONS_LIBS}, ${KDE4_KIDLETIME_LIBS}, ${KDE4_KCMUTILS_LIBS} and ${KDE4_KPRINTUTILS_LIBS} respectively. They don't require an additional include directory.&lt;br /&gt;
&lt;br /&gt;
===Improved RPATH settings===&lt;br /&gt;
&lt;br /&gt;
In the previous releases of KDE 4, the library installation directory was always added to the RPATH of libraries and executables.&lt;br /&gt;
With KDE 4.5 this is now only done if the library installation directory is not one of the system default library directories.&lt;br /&gt;
This means that e.g. /usr/lib is not added anymore to the RPATH.&lt;br /&gt;
&lt;br /&gt;
===Other minor changes===&lt;br /&gt;
&lt;br /&gt;
* A cache variable KDE4_SERIALIZE_TOOL has been added. It is empty by default, &lt;br /&gt;
but you can set it to a tool to serialize resource-intensive commands in parallel builds.&lt;br /&gt;
&lt;br /&gt;
* Some improvements to make cross compiling KDE easier were committed to FindKDE4Internal.cmake, but we are still not ready for cross compiling.&lt;br /&gt;
&lt;br /&gt;
* The documentation was improved, e.g. the macro KDE4_ADD_APP_ICON() was undocumented before.&lt;br /&gt;
&lt;br /&gt;
==New Modules==&lt;br /&gt;
&lt;br /&gt;
Some completely new installed modules have been added during this cycle:&lt;br /&gt;
&lt;br /&gt;
* FindDBusMenuQt.cmake&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also added were FindDocBookXML.cmake and FindDocBookXSL.cmake, but both are used only internally inside kdelibs and both are not installed.&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/CMake_KDE_4_5</id>
		<title>Development/CMake KDE 4 5</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/CMake_KDE_4_5"/>
				<updated>2010-08-15T19:21:17Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Changes in the buildsystem from KDE 4.4 to KDE 4.5=&lt;br /&gt;
&lt;br /&gt;
Starting with KDE 4.5, CMake &amp;gt;= 2.6.4 is required.&lt;br /&gt;
&lt;br /&gt;
==Incompatible Changes==&lt;br /&gt;
&lt;br /&gt;
===FindQt4.cmake: Imported Targets for the libraries===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Other Changes==&lt;br /&gt;
&lt;br /&gt;
===Required CMake version===&lt;br /&gt;
&lt;br /&gt;
Starting with KDE 4.5, CMake &amp;gt;= 2.6.4 is required (KDE 4.2 to 4.4 required 2.6.2).&lt;br /&gt;
&lt;br /&gt;
===Commit Policy for kdelibs/cmake/modules/===&lt;br /&gt;
&lt;br /&gt;
The [[Policies/CMake_Commit_Policy|commit policy]] introduced during the 4.3 development cycle is still active and must be followed.&lt;br /&gt;
&lt;br /&gt;
===Major FindQt4.cmake improvements===&lt;br /&gt;
&lt;br /&gt;
A lot of work went into FindQt4.cmake. This includes:&lt;br /&gt;
* Synced with FindQt4.cmake from CMake 2.8.0. Our version and the one shipped with CMake 2.8.0 are now almost identical again, there are only a bunch of minor differences left.&lt;br /&gt;
* Support for Qt 4.6 added. I.e. support for the QtMultimedia and QtScriptTools libraries has been added.&lt;br /&gt;
* Support for ActiveQt (Windows only) has been added.&lt;br /&gt;
* New variables QT_COLLECTIONGENERATOR_EXECUTABLE, QT_DESIGNER_EXECUTABLE and QT_LINGUIST_EXECUTABLE.&lt;br /&gt;
* New macros QT4_CREATE_TRANSLATION() and QT4_ADD_TRANSLATION().&lt;br /&gt;
* Improved support for Mac OSX, including Qt installed as frameworks&lt;br /&gt;
* Improved support for Windows, including handling release/debug libraries (see &amp;quot;Imported targets&amp;quot;)&lt;br /&gt;
* Support for static Qt libraries and the UseQt.cmake file fixed.&lt;br /&gt;
* FindQt4.cmake has been split into FindQt4.cmake, Qt4Macros.cmake and Qt4ConfigDependentSettings.cmake.&lt;br /&gt;
* Improved support for flexible Qt install locations under Windows (see &amp;quot;Imported targets&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
'''Imported Targets'''&lt;br /&gt;
&lt;br /&gt;
FindQt4.cmake now creates an imported library target for each of the Qt libraries which has been found. These imported targets can then be used like &amp;quot;normal&amp;quot; targets in CMakeLists.txt, e.g. in TARGET_LINK_LIBRARIES().&lt;br /&gt;
These imported targets are named &amp;quot;Qt4::&amp;lt;library name&amp;gt;&amp;quot;, e.g. Qt4::QtCore or Qt4::QtGui.&lt;br /&gt;
This brings several advantages:&lt;br /&gt;
* one imported library can have different locations for different buildtypes, i.e. for debug builds its IMPORTED_LOCATION_DEBUG property can point to the debug version of the library, while its IMPORTED_LOCATION_RELEASE property can point to the release version of the library&lt;br /&gt;
* If some library kfoo links against such an imported Qt4 library, and kfoo is exported, the export file will list Qt4::QtCore etc. as dependency, and not the absolute file path to the QtCore library. This has the big advantage, that the location of the QtCore library (and the other Qt libraries) is resolved at cmake-time of the software which uses kfoo, and not fixed to the location of QtCore where it was when kfoo was built. This is especially helpful for installing and building against KDE on Windows.&lt;br /&gt;
&lt;br /&gt;
If the variable QT_USE_IMPORTED_TARGETS is set to TRUE before FindQt4.cmake is executed, also the Qt library variables like QT_QTCORE_LIBRARY are set to point to these imported targets instead to the file path. This is the case automatically when doing a find_package(KDE4).&lt;br /&gt;
&lt;br /&gt;
===New libraries: kemoticons, kidletime, kcmutils and kprintutils===&lt;br /&gt;
&lt;br /&gt;
With KDE 4.5 3 four new libraries were added to kdelibs: the kemoticons library, the kidletime library, the kcmutils library and the kprintutils library. These libraries come with their associated variables. So if you want to link against these libraries, use ${KDE4_KEMOTICONS_LIBS}, ${KDE4_KIDLETIME_LIBS}, ${KDE4_KCMUTILS_LIBS} and ${KDE4_KPRINTUTILS_LIBS} respectively. They don't require an additional include directory.&lt;br /&gt;
&lt;br /&gt;
===Improved RPATH settings===&lt;br /&gt;
&lt;br /&gt;
In the previous releases of KDE 4, the library installation directory was always added to the RPATH of libraries and executables.&lt;br /&gt;
With KDE 4.5 this is now only done if the library installation directory is not one of the system default library directories.&lt;br /&gt;
This means that e.g. /usr/lib is not added anymore to the RPATH.&lt;br /&gt;
&lt;br /&gt;
===Other minor changes===&lt;br /&gt;
&lt;br /&gt;
* A cache variable KDE4_SERIALIZE_TOOL has been added. It is empty by default, &lt;br /&gt;
but you can set it to a tool to serialize resource-intensive commands in parallel builds.&lt;br /&gt;
&lt;br /&gt;
* Some improvements to make cross compiling KDE easier were committed to FindKDE4Internal.cmake, but we are still not ready for cross compiling.&lt;br /&gt;
&lt;br /&gt;
* The documentation was improved, e.g. the macro KDE4_ADD_APP_ICON() was undocumented before.&lt;br /&gt;
&lt;br /&gt;
==New Modules==&lt;br /&gt;
&lt;br /&gt;
Some completely new installed modules have been added during this cycle:&lt;br /&gt;
&lt;br /&gt;
* FindDBusMenuQt.cmake&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also added were FindDocBookXML.cmake and FindDocBookXSL.cmake, but both are used only internally inside kdelibs and both are not installed.&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/CMake_KDE_4_5</id>
		<title>Development/CMake KDE 4 5</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/CMake_KDE_4_5"/>
				<updated>2010-08-15T19:11:33Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: /* New libraries: knewstuff3, kunitconversion and kdewebkit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Changes in the buildsystem from KDE 4.4 to KDE 4.5=&lt;br /&gt;
&lt;br /&gt;
Starting with KDE 4.5, CMake &amp;gt;= 2.6.4 is required.&lt;br /&gt;
&lt;br /&gt;
==Incompatible Changes==&lt;br /&gt;
&lt;br /&gt;
===FindQt4.cmake: Imported Targets for the libraries===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Other Changes==&lt;br /&gt;
&lt;br /&gt;
===Required CMake version===&lt;br /&gt;
&lt;br /&gt;
Starting with KDE 4.5, CMake &amp;gt;= 2.6.4 is required (KDE 4.2 to 4.4 required 2.6.2).&lt;br /&gt;
&lt;br /&gt;
===Commit Policy for kdelibs/cmake/modules/===&lt;br /&gt;
&lt;br /&gt;
The [[Policies/CMake_Commit_Policy|commit policy]] introduced during the 4.3 development cycle is still active and must be followed.&lt;br /&gt;
&lt;br /&gt;
===Major FindQt4.cmake improvements===&lt;br /&gt;
&lt;br /&gt;
A lot of work went into FindQt4.cmake. This includes:&lt;br /&gt;
* Synced with FindQt4.cmake from CMake 2.8.0. Our version and the one shipped with CMake 2.8.0 are now almost identical again, there are only a bunch of minor differences left.&lt;br /&gt;
* Support for Qt 4.6 added. I.e. support for the QtMultimedia and QtScriptTools libraries has been added.&lt;br /&gt;
* Support for ActiveQt (Windows only) has been added.&lt;br /&gt;
* New variables QT_COLLECTIONGENERATOR_EXECUTABLE, QT_DESIGNER_EXECUTABLE and QT_LINGUIST_EXECUTABLE.&lt;br /&gt;
* New macros QT4_CREATE_TRANSLATION() and QT4_ADD_TRANSLATION().&lt;br /&gt;
* Improved support for Mac OSX, including Qt installed as frameworks&lt;br /&gt;
* Improved support for Windows, including handling release/debug libraries (see &amp;quot;Imported targets&amp;quot;)&lt;br /&gt;
* Support for static Qt libraries and the UseQt.cmake file fixed.&lt;br /&gt;
* FindQt4.cmake has been split into FindQt4.cmake, Qt4Macros.cmake and Qt4ConfigDependentSettings.cmake.&lt;br /&gt;
* Improved support for flexible Qt install locations under Windows (see &amp;quot;Imported targets&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
'''Imported Targets'''&lt;br /&gt;
&lt;br /&gt;
FindQt4.cmake now creates an imported library target for each of the Qt libraries which has been found. These imported targets can then be used like &amp;quot;normal&amp;quot; targets in CMakeLists.txt, e.g. in TARGET_LINK_LIBRARIES().&lt;br /&gt;
These imported targets are named &amp;quot;Qt4::&amp;lt;library name&amp;gt;&amp;quot;, e.g. Qt4::QtCore or Qt4::QtGui.&lt;br /&gt;
This brings several advantages:&lt;br /&gt;
* one imported library can have different locations for different buildtypes, i.e. for debug builds its IMPORTED_LOCATION_DEBUG property can point to the debug version of the library, while its IMPORTED_LOCATION_RELEASE property can point to the release version of the library&lt;br /&gt;
* If some library kfoo links against such an imported Qt4 library, and kfoo is exported, the export file will list Qt4::QtCore etc. as dependency, and not the absolute file path to the QtCore library. This has the big advantage, that the location of the QtCore library (and the other Qt libraries) is resolved at cmake-time of the software which uses kfoo, and not fixed to the location of QtCore where it was when kfoo was built. This is especially helpful for installing and building against KDE on Windows.&lt;br /&gt;
&lt;br /&gt;
If the variable QT_USE_IMPORTED_TARGETS is set to TRUE before FindQt4.cmake is executed, also the Qt library variables like QT_QTCORE_LIBRARY are set to point to these imported targets instead to the file path. This is the case automatically when doing a find_package(KDE4).&lt;br /&gt;
&lt;br /&gt;
===New libraries: kemoticons, kidletime, kcmutils and kprintutils===&lt;br /&gt;
&lt;br /&gt;
With KDE 4.5 3 four new libraries were added to kdelibs: the kemoticons library, the kidletime library, the kcmutils library and the kprintutils library. These libraries come with their associated variables. So if you want to link against these libraries, use ${KDE4_KEMOTICONS_LIBS}, ${KDE4_KIDLETIME_LIBS}, ${KDE4_KCMUTILS_LIBS} and ${KDE4_KPRINTUTILS_LIBS} respectively. They don't require an additional include directory.&lt;br /&gt;
&lt;br /&gt;
===New kdecore component KAuth===&lt;br /&gt;
&lt;br /&gt;
With KDE 4.4 the kdecore library now contains a new authorization component, called KAuth, which support PolicyKit. Along with it come two new macros, KDE4_INSTALL_AUTH_ACTIONS() and KDE4_INSTALL_AUTH_HELPER_FILES(). These macros help with generating and installing the policy action files.&lt;br /&gt;
&lt;br /&gt;
===Other minor changes===&lt;br /&gt;
&lt;br /&gt;
* The file MacroAddFileDependencies.cmake has been removed. It is not shipped anymore since this file is part of CMake 2.6.2, which we still depend on for KDE 4.4. So it is not necessary to keep an identical copy in KDE.&lt;br /&gt;
&lt;br /&gt;
* A new install location variable DBUS_SYSTEM_SERVICES_INSTALL_DIR has been added. It defaults  to ${CMAKE_INSTALL_PREFIX}/share/dbus-1/system-services/ . You probably want to set it to some system wide location.&lt;br /&gt;
&lt;br /&gt;
* Macro KDE4_ADD_KCFG_FILES(): new optional argument USE_RELATIVE_PATH. Use this option to specify the (relative) path where the generated files will be put.&lt;br /&gt;
&lt;br /&gt;
* Support for building KDE4 on GNU Hurd has been improved.&lt;br /&gt;
&lt;br /&gt;
==New Modules==&lt;br /&gt;
&lt;br /&gt;
Some completely new installed modules have been added during this cycle:&lt;br /&gt;
&lt;br /&gt;
* FindDBusMenuQt.cmake&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also added were FindDocBookXML.cmake and FindDocBookXSL.cmake, but both are used only internally inside kdelibs and both are not installed.&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/CMake_KDE_4_5</id>
		<title>Development/CMake KDE 4 5</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/CMake_KDE_4_5"/>
				<updated>2010-08-15T19:04:02Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Changes in the buildsystem from KDE 4.4 to KDE 4.5=&lt;br /&gt;
&lt;br /&gt;
Starting with KDE 4.5, CMake &amp;gt;= 2.6.4 is required.&lt;br /&gt;
&lt;br /&gt;
==Incompatible Changes==&lt;br /&gt;
&lt;br /&gt;
===FindQt4.cmake: Imported Targets for the libraries===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Other Changes==&lt;br /&gt;
&lt;br /&gt;
===Required CMake version===&lt;br /&gt;
&lt;br /&gt;
Starting with KDE 4.5, CMake &amp;gt;= 2.6.4 is required (KDE 4.2 to 4.4 required 2.6.2).&lt;br /&gt;
&lt;br /&gt;
===Commit Policy for kdelibs/cmake/modules/===&lt;br /&gt;
&lt;br /&gt;
The [[Policies/CMake_Commit_Policy|commit policy]] introduced during the 4.3 development cycle is still active and must be followed.&lt;br /&gt;
&lt;br /&gt;
===Major FindQt4.cmake improvements===&lt;br /&gt;
&lt;br /&gt;
A lot of work went into FindQt4.cmake. This includes:&lt;br /&gt;
* Synced with FindQt4.cmake from CMake 2.8.0. Our version and the one shipped with CMake 2.8.0 are now almost identical again, there are only a bunch of minor differences left.&lt;br /&gt;
* Support for Qt 4.6 added. I.e. support for the QtMultimedia and QtScriptTools libraries has been added.&lt;br /&gt;
* Support for ActiveQt (Windows only) has been added.&lt;br /&gt;
* New variables QT_COLLECTIONGENERATOR_EXECUTABLE, QT_DESIGNER_EXECUTABLE and QT_LINGUIST_EXECUTABLE.&lt;br /&gt;
* New macros QT4_CREATE_TRANSLATION() and QT4_ADD_TRANSLATION().&lt;br /&gt;
* Improved support for Mac OSX, including Qt installed as frameworks&lt;br /&gt;
* Improved support for Windows, including handling release/debug libraries (see &amp;quot;Imported targets&amp;quot;)&lt;br /&gt;
* Support for static Qt libraries and the UseQt.cmake file fixed.&lt;br /&gt;
* FindQt4.cmake has been split into FindQt4.cmake, Qt4Macros.cmake and Qt4ConfigDependentSettings.cmake.&lt;br /&gt;
* Improved support for flexible Qt install locations under Windows (see &amp;quot;Imported targets&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
'''Imported Targets'''&lt;br /&gt;
&lt;br /&gt;
FindQt4.cmake now creates an imported library target for each of the Qt libraries which has been found. These imported targets can then be used like &amp;quot;normal&amp;quot; targets in CMakeLists.txt, e.g. in TARGET_LINK_LIBRARIES().&lt;br /&gt;
These imported targets are named &amp;quot;Qt4::&amp;lt;library name&amp;gt;&amp;quot;, e.g. Qt4::QtCore or Qt4::QtGui.&lt;br /&gt;
This brings several advantages:&lt;br /&gt;
* one imported library can have different locations for different buildtypes, i.e. for debug builds its IMPORTED_LOCATION_DEBUG property can point to the debug version of the library, while its IMPORTED_LOCATION_RELEASE property can point to the release version of the library&lt;br /&gt;
* If some library kfoo links against such an imported Qt4 library, and kfoo is exported, the export file will list Qt4::QtCore etc. as dependency, and not the absolute file path to the QtCore library. This has the big advantage, that the location of the QtCore library (and the other Qt libraries) is resolved at cmake-time of the software which uses kfoo, and not fixed to the location of QtCore where it was when kfoo was built. This is especially helpful for installing and building against KDE on Windows.&lt;br /&gt;
&lt;br /&gt;
If the variable QT_USE_IMPORTED_TARGETS is set to TRUE before FindQt4.cmake is executed, also the Qt library variables like QT_QTCORE_LIBRARY are set to point to these imported targets instead to the file path. This is the case automatically when doing a find_package(KDE4).&lt;br /&gt;
&lt;br /&gt;
===New libraries: knewstuff3, kunitconversion and kdewebkit===&lt;br /&gt;
&lt;br /&gt;
With KDE 4.4 3 new libraries were added to kdelibs: the knewstuff3 library, the kunitconversion library and the kdewebkit library. These libraries come with their associated variables. So if you want to link against these libraries, use ${KDE4_KNEWSTUFF3_LIBS}, ${KDE4_KUNITCONVERSION_LIBS} and ${KDE4_KDEWEBKIT_LIBS} respectively. They don't require an additional include directory.&lt;br /&gt;
&lt;br /&gt;
===New kdecore component KAuth===&lt;br /&gt;
&lt;br /&gt;
With KDE 4.4 the kdecore library now contains a new authorization component, called KAuth, which support PolicyKit. Along with it come two new macros, KDE4_INSTALL_AUTH_ACTIONS() and KDE4_INSTALL_AUTH_HELPER_FILES(). These macros help with generating and installing the policy action files.&lt;br /&gt;
&lt;br /&gt;
===Other minor changes===&lt;br /&gt;
&lt;br /&gt;
* The file MacroAddFileDependencies.cmake has been removed. It is not shipped anymore since this file is part of CMake 2.6.2, which we still depend on for KDE 4.4. So it is not necessary to keep an identical copy in KDE.&lt;br /&gt;
&lt;br /&gt;
* A new install location variable DBUS_SYSTEM_SERVICES_INSTALL_DIR has been added. It defaults  to ${CMAKE_INSTALL_PREFIX}/share/dbus-1/system-services/ . You probably want to set it to some system wide location.&lt;br /&gt;
&lt;br /&gt;
* Macro KDE4_ADD_KCFG_FILES(): new optional argument USE_RELATIVE_PATH. Use this option to specify the (relative) path where the generated files will be put.&lt;br /&gt;
&lt;br /&gt;
* Support for building KDE4 on GNU Hurd has been improved.&lt;br /&gt;
&lt;br /&gt;
==New Modules==&lt;br /&gt;
&lt;br /&gt;
Some completely new installed modules have been added during this cycle:&lt;br /&gt;
&lt;br /&gt;
* FindDBusMenuQt.cmake&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also added were FindDocBookXML.cmake and FindDocBookXSL.cmake, but both are used only internally inside kdelibs and both are not installed.&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/CMake_KDE_4_5</id>
		<title>Development/CMake KDE 4 5</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/CMake_KDE_4_5"/>
				<updated>2010-08-15T18:53:36Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: Created page with '=Changes in the buildsystem from KDE 4.4 to KDE 4.5=  Starting with KDE 4.5, CMake &amp;gt;= 2.6.4 is required.  ==Incompatible Changes==  ===FindQt4.cmake: Imported Targets for the lib...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Changes in the buildsystem from KDE 4.4 to KDE 4.5=&lt;br /&gt;
&lt;br /&gt;
Starting with KDE 4.5, CMake &amp;gt;= 2.6.4 is required.&lt;br /&gt;
&lt;br /&gt;
==Incompatible Changes==&lt;br /&gt;
&lt;br /&gt;
===FindQt4.cmake: Imported Targets for the libraries===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Other Changes==&lt;br /&gt;
&lt;br /&gt;
===Required CMake version===&lt;br /&gt;
&lt;br /&gt;
Starting with KDE 4.5, CMake &amp;gt;= 2.6.4 is required (KDE 4.2 to 4.4 required 2.6.2).&lt;br /&gt;
&lt;br /&gt;
===Commit Policy for kdelibs/cmake/modules/===&lt;br /&gt;
&lt;br /&gt;
The [[Policies/CMake_Commit_Policy|commit policy]] introduced during the 4.3 development cycle is still active and must be followed.&lt;br /&gt;
&lt;br /&gt;
===Major FindQt4.cmake improvements===&lt;br /&gt;
&lt;br /&gt;
A lot of work went into FindQt4.cmake. This includes:&lt;br /&gt;
* Synced with FindQt4.cmake from CMake 2.8.0. Our version and the one shipped with CMake 2.8.0 are now almost identical again, there are only a bunch of minor differences left.&lt;br /&gt;
* Support for Qt 4.6 added. I.e. support for the QtMultimedia and QtScriptTools libraries has been added.&lt;br /&gt;
* Support for ActiveQt (Windows only) has been added.&lt;br /&gt;
* New variables QT_COLLECTIONGENERATOR_EXECUTABLE, QT_DESIGNER_EXECUTABLE and QT_LINGUIST_EXECUTABLE.&lt;br /&gt;
* New macros QT4_CREATE_TRANSLATION() and QT4_ADD_TRANSLATION().&lt;br /&gt;
* Improved support for Mac OSX, including Qt installed as frameworks&lt;br /&gt;
* Improved support for Windows, including handling release/debug libraries (see &amp;quot;Imported targets&amp;quot;)&lt;br /&gt;
* Support for static Qt libraries and the UseQt.cmake file fixed.&lt;br /&gt;
* FindQt4.cmake has been split into FindQt4.cmake, Qt4Macros.cmake and Qt4ConfigDependentSettings.cmake.&lt;br /&gt;
* Improved support for flexible Qt install locations under Windows (see &amp;quot;Imported targets&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
'''Imported Targets'''&lt;br /&gt;
&lt;br /&gt;
FindQt4.cmake now creates an imported library target for each of the Qt libraries which has been found. These imported targets can then be used like &amp;quot;normal&amp;quot; targets in CMakeLists.txt, e.g. in TARGET_LINK_LIBRARIES().&lt;br /&gt;
These imported targets are named &amp;quot;Qt4::&amp;lt;library name&amp;gt;&amp;quot;, e.g. Qt4::QtCore or Qt4::QtGui.&lt;br /&gt;
This brings several advantages:&lt;br /&gt;
* one imported library can have different locations for different buildtypes, i.e. for debug builds its IMPORTED_LOCATION_DEBUG property can point to the debug version of the library, while its IMPORTED_LOCATION_RELEASE property can point to the release version of the library&lt;br /&gt;
* If some library kfoo links against such an imported Qt4 library, and kfoo is exported, the export file will list Qt4::QtCore etc. as dependency, and not the absolute file path to the QtCore library. This has the big advantage, that the location of the QtCore library (and the other Qt libraries) is resolved at cmake-time of the software which uses kfoo, and not fixed to the location of QtCore where it was when kfoo was built. This is especially helpful for installing and building against KDE on Windows.&lt;br /&gt;
&lt;br /&gt;
If the variable QT_USE_IMPORTED_TARGETS is set to TRUE before FindQt4.cmake is executed, also the Qt library variables like QT_QTCORE_LIBRARY are set to point to these imported targets instead to the file path. This is the case automatically when doing a find_package(KDE4).&lt;br /&gt;
&lt;br /&gt;
===New libraries: knewstuff3, kunitconversion and kdewebkit===&lt;br /&gt;
&lt;br /&gt;
With KDE 4.4 3 new libraries were added to kdelibs: the knewstuff3 library, the kunitconversion library and the kdewebkit library. These libraries come with their associated variables. So if you want to link against these libraries, use ${KDE4_KNEWSTUFF3_LIBS}, ${KDE4_KUNITCONVERSION_LIBS} and ${KDE4_KDEWEBKIT_LIBS} respectively. They don't require an additional include directory.&lt;br /&gt;
&lt;br /&gt;
===New kdecore component KAuth===&lt;br /&gt;
&lt;br /&gt;
With KDE 4.4 the kdecore library now contains a new authorization component, called KAuth, which support PolicyKit. Along with it come two new macros, KDE4_INSTALL_AUTH_ACTIONS() and KDE4_INSTALL_AUTH_HELPER_FILES(). These macros help with generating and installing the policy action files.&lt;br /&gt;
&lt;br /&gt;
===Other minor changes===&lt;br /&gt;
&lt;br /&gt;
* The file MacroAddFileDependencies.cmake has been removed. It is not shipped anymore since this file is part of CMake 2.6.2, which we still depend on for KDE 4.4. So it is not necessary to keep an identical copy in KDE.&lt;br /&gt;
&lt;br /&gt;
* A new install location variable DBUS_SYSTEM_SERVICES_INSTALL_DIR has been added. It defaults  to ${CMAKE_INSTALL_PREFIX}/share/dbus-1/system-services/ . You probably want to set it to some system wide location.&lt;br /&gt;
&lt;br /&gt;
* Macro KDE4_ADD_KCFG_FILES(): new optional argument USE_RELATIVE_PATH. Use this option to specify the (relative) path where the generated files will be put.&lt;br /&gt;
&lt;br /&gt;
* Support for building KDE4 on GNU Hurd has been improved.&lt;br /&gt;
&lt;br /&gt;
==New Modules==&lt;br /&gt;
&lt;br /&gt;
Some completely new installed modules have been added during this cycle:&lt;br /&gt;
&lt;br /&gt;
* FindHUNSPELL.cmake&lt;br /&gt;
* FindKDevPlatform.cmake&lt;br /&gt;
* FindLibAttica.cmake&lt;br /&gt;
* FindSharedDesktopOntologies.cmake&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also added were FindPolkitQt-1.cmake and FindPolkitQt.cmake, but both are used only internally inside kdelibs and both are not installed.&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/CMake</id>
		<title>Development/CMake</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/CMake"/>
				<updated>2010-08-15T18:45:25Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: /* Changelog for KDE's CMake buildsystem */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Development/CMake}}&lt;br /&gt;
&lt;br /&gt;
This is the central directory of all [http://www.cmake.org CMake]-related pages on TechBase.&lt;br /&gt;
&lt;br /&gt;
== KDE4 Specific CMake Documentation==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/CMake|CMake tutorial]]&lt;br /&gt;
:''An introduction to using CMake for KDE4''&lt;br /&gt;
&lt;br /&gt;
;[[Development/CMake_FAQ|KDE's CMake FAQ]]&lt;br /&gt;
:''Some Frequently Asked Questions''&lt;br /&gt;
&lt;br /&gt;
;[http://api.kde.org/cmake/modules.html KDE CMake modules API]&lt;br /&gt;
:''Documentation for all CMake modules in kdelibs (generated from kdelibs svn)''&lt;br /&gt;
&lt;br /&gt;
;[[Development/CMake/DashboardBuilds|Nightly dashboard builds for KDE]]&lt;br /&gt;
: ''Describes the quality dashboard for KDE and how to set up Nightly builds for it''&lt;br /&gt;
&lt;br /&gt;
;[[Development/CMake/Addons for KDE|KDE4 CMake Buildtypes, macros and variables]]&lt;br /&gt;
:''Documentation for the buildtypes (debugfull, release, ...), macros and variables for building KDE4 software, provided by FindKDE4Internal.cmake (manually written)''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tools/Automoc4|Automoc4]]&lt;br /&gt;
:''Automoc4 documentation.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Policies==&lt;br /&gt;
&lt;br /&gt;
;[[Policies/CMake_Commit_Policy|Commit Policy for kdelibs/cmake/modules/]]&lt;br /&gt;
:''The files in kdelibs/cmake/modules/ are part of the public interface of KDE, some special policies apply to committing there.''&lt;br /&gt;
&lt;br /&gt;
;[[Policies/CMake_and_Source_Compatibility|Source compatiblity with CMake]]&lt;br /&gt;
:''This page discusses what has to be taken care of in order to stay source compatible on the CMake level.''&lt;br /&gt;
&lt;br /&gt;
;[[Policies/CMake_Coding_Style|Coding style for CMake files]]&lt;br /&gt;
:''Some guidelines how to write CMake scripts in KDE.''&lt;br /&gt;
&lt;br /&gt;
==Changelog for KDE's CMake buildsystem==&lt;br /&gt;
&lt;br /&gt;
;[[Development/CMake_KDE_4_5 |Changes in the buildsystem with KDE 4.5]]&lt;br /&gt;
:''What has changed in KDE 4.5 compared to KDE 4.4''&lt;br /&gt;
&lt;br /&gt;
;[[Development/CMake_KDE_4_4 |Changes in the buildsystem with KDE 4.4]]&lt;br /&gt;
:''What has changed in KDE 4.4 compared to KDE 4.3''&lt;br /&gt;
&lt;br /&gt;
;[[Development/CMake_KDE_4_3 |Changes in the buildsystem with KDE 4.3]]&lt;br /&gt;
:''What has changed in KDE 4.3 compared to KDE 4.2''&lt;br /&gt;
&lt;br /&gt;
;[[Development/CMake_KDE_4_2 |Changes in the buildsystem with KDE 4.2]]&lt;br /&gt;
:''What has changed in KDE 4.2 compared to KDE 4.0/4.1''&lt;br /&gt;
&lt;br /&gt;
==More Places to learn about CMake==&lt;br /&gt;
&lt;br /&gt;
Here are some good places to learn about CMake in general:&lt;br /&gt;
* [http://www.cmake.org/HTML/Documentation.html CMake Manual]&lt;br /&gt;
* [http://www.cmake.org/Wiki/CMake CMake Wiki]&lt;br /&gt;
* [http://www.cmake.org/Wiki/CMake_HowToDoPlatformChecks CMake System Checks ]&lt;br /&gt;
* [http://www.cmake.org/Wiki/CMake_HowToFindInstalledSoftware Finding Optional Packages ]&lt;br /&gt;
* [http://www.cmake.org/Wiki/HowToBuildKDE4Software KDE 4 Tutorial at the CMake Wiki ]&lt;br /&gt;
* [http://www.cmake.org/Wiki/CMake_FAQ CMake FAQ]&lt;br /&gt;
* [http://www.elpauer.org/stuff/learning_cmake.pdf Slides for the &amp;quot;Learning CMake&amp;quot; seminar]&lt;br /&gt;
* [http://mail.kde.org/pipermail/kde-buildsystem/ The kde-buildsystem Mailing List Archive]&lt;br /&gt;
&lt;br /&gt;
Also, consider joining the [http://www.cmake.org/mailman/listinfo/cmake CMake mailing list].&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/CMake</id>
		<title>Development/CMake</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/CMake"/>
				<updated>2010-03-29T19:10:17Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: /* Policies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Development/CMake}}&lt;br /&gt;
&lt;br /&gt;
This is the central directory of all [http://www.cmake.org CMake]-related pages on TechBase.&lt;br /&gt;
&lt;br /&gt;
== KDE4 Specific CMake Documentation==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/CMake|CMake tutorial]]&lt;br /&gt;
:''An introduction to using CMake for KDE4''&lt;br /&gt;
&lt;br /&gt;
;[[Development/CMake_FAQ|KDE's CMake FAQ]]&lt;br /&gt;
:''Some Frequently Asked Questions''&lt;br /&gt;
&lt;br /&gt;
;[http://api.kde.org/cmake/modules.html KDE CMake modules API]&lt;br /&gt;
:''Documentation for all CMake modules in kdelibs (generated from kdelibs svn)''&lt;br /&gt;
&lt;br /&gt;
;[[Development/CMake/DashboardBuilds|Nightly dashboard builds for KDE]]&lt;br /&gt;
: ''Describes the quality dashboard for KDE and how to set up Nightly builds for it''&lt;br /&gt;
&lt;br /&gt;
;[[Development/CMake/Addons for KDE|KDE4 CMake Buildtypes, macros and variables]]&lt;br /&gt;
:''Documentation for the buildtypes (debugfull, release, ...), macros and variables for building KDE4 software, provided by FindKDE4Internal.cmake (manually written)''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tools/Automoc4|Automoc4]]&lt;br /&gt;
:''Automoc4 documentation.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Policies==&lt;br /&gt;
&lt;br /&gt;
;[[Policies/CMake_Commit_Policy|Commit Policy for kdelibs/cmake/modules/]]&lt;br /&gt;
:''The files in kdelibs/cmake/modules/ are part of the public interface of KDE, some special policies apply to committing there.''&lt;br /&gt;
&lt;br /&gt;
;[[Policies/CMake_and_Source_Compatibility|Source compatiblity with CMake]]&lt;br /&gt;
:''This page discusses what has to be taken care of in order to stay source compatible on the CMake level.''&lt;br /&gt;
&lt;br /&gt;
;[[Policies/CMake_Coding_Style|Coding style for CMake files]]&lt;br /&gt;
:''Some guidelines how to write CMake scripts in KDE.''&lt;br /&gt;
&lt;br /&gt;
==Changelog for KDE's CMake buildsystem==&lt;br /&gt;
&lt;br /&gt;
;[[Development/CMake_KDE_4_4 |Changes in the buildsystem with KDE 4.4]]&lt;br /&gt;
:''What has changed in KDE 4.4 compared to KDE 4.3''&lt;br /&gt;
&lt;br /&gt;
;[[Development/CMake_KDE_4_3 |Changes in the buildsystem with KDE 4.3]]&lt;br /&gt;
:''What has changed in KDE 4.3 compared to KDE 4.2''&lt;br /&gt;
&lt;br /&gt;
;[[Development/CMake_KDE_4_2 |Changes in the buildsystem with KDE 4.2]]&lt;br /&gt;
:''What has changed in KDE 4.2 compared to KDE 4.0/4.1''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==More Places to learn about CMake==&lt;br /&gt;
&lt;br /&gt;
Here are some good places to learn about CMake in general:&lt;br /&gt;
* [http://www.cmake.org/HTML/Documentation.html CMake Manual]&lt;br /&gt;
* [http://www.cmake.org/Wiki/CMake CMake Wiki]&lt;br /&gt;
* [http://www.cmake.org/Wiki/CMake_HowToDoPlatformChecks CMake System Checks ]&lt;br /&gt;
* [http://www.cmake.org/Wiki/CMake_HowToFindInstalledSoftware Finding Optional Packages ]&lt;br /&gt;
* [http://www.cmake.org/Wiki/HowToBuildKDE4Software KDE 4 Tutorial at the CMake Wiki ]&lt;br /&gt;
* [http://www.cmake.org/Wiki/CMake_FAQ CMake FAQ]&lt;br /&gt;
* [http://www.elpauer.org/stuff/learning_cmake.pdf Slides for the &amp;quot;Learning CMake&amp;quot; seminar]&lt;br /&gt;
* [http://mail.kde.org/pipermail/kde-buildsystem/ The kde-buildsystem Mailing List Archive]&lt;br /&gt;
&lt;br /&gt;
Also, consider joining the [http://www.cmake.org/mailman/listinfo/cmake CMake mailing list].&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/CMake/DashboardBuilds</id>
		<title>Development/CMake/DashboardBuilds</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/CMake/DashboardBuilds"/>
				<updated>2010-03-26T18:38:22Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= What is a dashboard ? =&lt;br /&gt;
&lt;br /&gt;
A dashboard can show the results of Nightly and Continuous builds of a software package. This includes warnings and errors from the configure and build process as well as the results of the executed tests belonging to the software package. This is not only displayed for one machine, but ideally for all supported operating systems such results are submitted, also with different configurations, e.g. one for a minimal system with most optional features disabled and one for a full featured system.&lt;br /&gt;
&lt;br /&gt;
For KDE [http://www.cdash.org CDash-based] dashboards are set up at http://my.cdash.org, a service provided by [http://www.kitware.com Kitware]. CDash only displays the results, the actual building and testing is done decentral on other machines.&lt;br /&gt;
When failures occur, like build errors or failed tests, notification emails can be sent by CDash.&lt;br /&gt;
So by building and testing KDE each day on the supported platforms and collecting the results in a central place, we can make sure that KDE stays compiling and also working on all supported platforms.&lt;br /&gt;
&lt;br /&gt;
You can help too to increase the quality by setting up a Nightly build and submitting the results to http://my.cdash.org.&lt;br /&gt;
&lt;br /&gt;
= For which modules/packages are there dashboards ?=&lt;br /&gt;
&lt;br /&gt;
Currently there are dashboards set up for all modules of KDE, and one for kdesupport. There are not yet dashboards for extragear and koffice.&lt;br /&gt;
If you are interested in setting dashboards up for these too, just go to http://my.cdash.org and do it, or ask on the kde-buildsystem mailing list if you have any questions.&lt;br /&gt;
&lt;br /&gt;
So, here comes the list of currently existing KDE dashboards:&lt;br /&gt;
&lt;br /&gt;
* kdesupport&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdesupport kdesupport]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=automoc4 automoc4]&lt;br /&gt;
&lt;br /&gt;
* KDE&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeaccessibility kdeaccessibility]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeadmin kdeadmin]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeartwork kdeartwork]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebase-apps kdebase/apps]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebase-runtime kdebase/runtime]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebase-workspace kdebase/workspace]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebindings kdebindings]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeedu kdeedu]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeexamples kdeexamples]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdegames kdegames]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdegraphics kdegraphics]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdelibs kdelibs]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdemultimedia kdemultimedia]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdenetwork kdenetwork]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdepim kdepim]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdepimlibs kdepimlibs]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeplasma-addons kdeplasma-addons]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdesdk kdesdk]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdetoys kdetoys]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeutils kdeutils]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdewebdev kdewebdev]&lt;br /&gt;
&lt;br /&gt;
= How to set up a Nightly build =&lt;br /&gt;
&lt;br /&gt;
Setting up a Nightly build and this way contributing to keep KDE working is not hard.&lt;br /&gt;
&lt;br /&gt;
You need:&lt;br /&gt;
* A computer. It should be running the Nightly build ''every day'', at some time after 20:00 CET (for the Nightly builds the state of the repository at 20:00 CET is used).&lt;br /&gt;
* A KDE development environment installed on this computer, i.e. &lt;br /&gt;
** CMake &amp;gt;= 2.6.2, &amp;gt;= 2.8.0 is recommended for the Nightly builds (better warning and error reporting)&lt;br /&gt;
** Compiler etc.&lt;br /&gt;
** Subversion client&lt;br /&gt;
** Qt4 and the other required libraries for building KDE4&lt;br /&gt;
* Some time to maintain the Nightly build, i.e. to upgrade the required libraries, e.g. Qt4 when necessary, to install new required libraries etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Under Unix ==&lt;br /&gt;
&lt;br /&gt;
This applies to Linux, FreeBSD and other Unixes. It should also apply to Mac OSX, but this hasn't been tested yet.&lt;br /&gt;
You can figure out how to set up the Nightly builds yourself, but we have also something prepared to make it really easy. Let's assume you want to contribute a Nightly build for the kdeutils modules. That's how you do it:&lt;br /&gt;
&lt;br /&gt;
* Go to http://my.cdash.org and register&lt;br /&gt;
* Once registered, subscribe to the kdeutils project&lt;br /&gt;
* Checkout KDE/kdesdk/cmake/nightly-support/ from KDE svn. There, in the KDE/ subdirectory is a ctest-script ready to use for each KDE module.&lt;br /&gt;
* Write a shell script which sets the CMAKE_PREFIX_PATH environment variable so that CMake will find everything required and then execute ctest with the KDEUtilsNightly.cmake script. This will look something like the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
  CMAKE_PREFIX_PATH=/opt/kde-qt:/opt/phonon:/what/ever/else/you/need&lt;br /&gt;
  ctest -V -S /where/you/checked/out/KDE/KDEUtilsNightly.cmake,KDE_CTEST_BUILD_SUFFIX=gcc-4.2.3&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That's it basically. The -V option for ctest makes ctest verbose, so you can see what it's doing. The KDE_CTEST_BUILD_SUFFIX will be appended to the buildname displayed at http://my.cdash.org/index.php?project=kdeutils. Setting it to the used compiler is a sensible choice.&lt;br /&gt;
&lt;br /&gt;
* Set up a cron job which runs this script every day:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
  $ crontab -e&lt;br /&gt;
  00 22 * * * /where/is/my/script/run_kdeutils_nightly.sh&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That's it. Probably you first want to run the script manually a few times until everything works, but after that you can just have it executed via cron.&lt;br /&gt;
The next day you should then see your results on http://my.cdash.org.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to contribute Nightly builds for more than one KDE module, it gets a little bit more complicated. You have to make sure that the modules are built in the right order, and that the modules are installed correctly, if other modules depend on them. For examples see kdesdk/cmake/nightly-support/example-scripts/, e.g. [http://websvn.kde.org/*checkout*/trunk/KDE/kdesdk/cmake/nightly-support/example-scripts/Nightlys-2.6.2 Nightlys-2.6.2] is the shell script I use on my machine to build (and install where necessary) all KDE modules on my Linux machine.&lt;br /&gt;
&lt;br /&gt;
== Under Windows ==&lt;br /&gt;
&lt;br /&gt;
Nobody has done this yet for KDE AFAIK, but it should be quite similar. If you intend to do this, please contact the kde-buildsystem mailing list, we will do our best to get it working quickly.&lt;br /&gt;
&lt;br /&gt;
= How to get notification emails =&lt;br /&gt;
&lt;br /&gt;
So, you don't want to/cannot submit a Nightly build, but you want to receive notification emails from CDash if the compilation of one of the projects fails or if test cases fail.&lt;br /&gt;
&lt;br /&gt;
If that's the case, you need to &lt;br /&gt;
* Go to http://my.cdash.org and register. You will get a confirmation email.&lt;br /&gt;
* Once you have a valid login at http://my.cdash.org, go there&lt;br /&gt;
** Login&lt;br /&gt;
** Click the &amp;quot;My CDash&amp;quot; link in the top left corner&lt;br /&gt;
** Then, click &amp;quot;Show public projects&amp;quot;&lt;br /&gt;
** Search the project you are interested in and click &amp;quot;Subscribe&amp;quot;&lt;br /&gt;
** Go to the &amp;quot;Email preference&amp;quot; and &amp;quot;Email category&amp;quot; tabs and configure what emails you want to receive.&lt;br /&gt;
&lt;br /&gt;
That's all. Now you should receive notification emails whenever problems in this project occur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= How to get help=&lt;br /&gt;
&lt;br /&gt;
If you have any questions regarding Nightly or Continuous builds for KDE or about CDash or CTest in general, please ask on the [https://mail.kde.org/mailman/listinfo/kde-buildsystem kde-buildsystem] or [https://mail.kde.org/mailman/listinfo/kde-core-devel kde-core-devel] KDE mailing lists, or also on the [http://public.kitware.com/cgi-bin/mailman/listinfo/cdash CDash mailing list].&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/CMake/DashboardBuilds</id>
		<title>Development/CMake/DashboardBuilds</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/CMake/DashboardBuilds"/>
				<updated>2010-03-26T18:32:17Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= What is a dashboard ? =&lt;br /&gt;
&lt;br /&gt;
A dashboard can show the results of Nightly and Continuous builds of a software package. This includes warnings and errors from the configure and build process as well as the results of the executed tests belonging to the software package. This is not only displayed for one machine, but ideally for all supported operating systems such results are submitted, also with different configurations, e.g. one for a minimal system with most optional features disabled and one for a full featured system.&lt;br /&gt;
&lt;br /&gt;
For KDE [http://www.cdash.org CDash-based] dashboards are set up at http://my.cdash.org, a service provided by [http://www.kitware.com Kitware]. CDash only displays the results, the actual building and testing is done decentral on other machines.&lt;br /&gt;
When failures occur, like build errors or failed tests, notification emails can be sent by CDash.&lt;br /&gt;
So by building and testing KDE each day on the supported platforms and collecting the results in a central place, we can make sure that KDE stays compiling and also working on all supported platforms.&lt;br /&gt;
&lt;br /&gt;
You can help too to increase the quality by setting up a Nightly build and submitting the results to http://my.cdash.org.&lt;br /&gt;
&lt;br /&gt;
= For which modules/packages are there dashboards ?=&lt;br /&gt;
&lt;br /&gt;
Currently there are dashboards set up for all modules of KDE, and one for kdesupport. There are not yet dashboards for extragear and koffice.&lt;br /&gt;
If you are interested in setting dashboards up for these too, just go to http://my.cdash.org and do it, or ask on the kde-buildsystem mailing list if you have any questions.&lt;br /&gt;
&lt;br /&gt;
So, here comes the list of currently existing KDE dashboards:&lt;br /&gt;
&lt;br /&gt;
* kdesupport&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdesupport kdesupport]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=automoc4 automoc4]&lt;br /&gt;
&lt;br /&gt;
* KDE&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeaccessibility kdeaccessibility]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeadmin kdeadmin]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeartwork kdeartwork]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebase-apps kdebase/apps]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebase-runtime kdebase/runtime]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebase-workspace kdebase/workspace]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebindings kdebindings]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeedu kdeedu]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeexamples kdeexamples]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdegames kdegames]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdegraphics kdegraphics]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdelibs kdelibs]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdemultimedia kdemultimedia]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdenetwork kdenetwork]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdepim kdepim]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdepimlibs kdepimlibs]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeplasma-addons kdeplasma-addons]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdesdk kdesdk]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdetoys kdetoys]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeutils kdeutils]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdewebdev kdewebdev]&lt;br /&gt;
&lt;br /&gt;
= How to set up a Nightly build =&lt;br /&gt;
&lt;br /&gt;
Setting up a Nightly build and this way contributing to keep KDE working is not hard.&lt;br /&gt;
&lt;br /&gt;
You need:&lt;br /&gt;
* A computer. It should be running the Nightly build ''every day'', at some time after 20:00 CET (for the Nightly builds the state of the repository at 20:00 CET is used).&lt;br /&gt;
* A KDE development environment installed on this computer, i.e. &lt;br /&gt;
** CMake &amp;gt;= 2.6.2, &amp;gt;= 2.8.0 is recommended for the Nightly builds (better warning and error reporting)&lt;br /&gt;
** Compiler etc.&lt;br /&gt;
** Subversion client&lt;br /&gt;
** Qt4 and the other required libraries for building KDE4&lt;br /&gt;
* Some time to maintain the Nightly build, i.e. to upgrade the required libraries, e.g. Qt4 when necessary, to install new required libraries etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to do it under Unix ==&lt;br /&gt;
&lt;br /&gt;
This applies to Linux, FreeBSD and other Unixes. It should also apply to Mac OSX, but this hasn't been tested yet.&lt;br /&gt;
You can figure out how to set up the Nightly builds yourself, but we have also something prepared to make it really easy. Let's assume you want to contribute a Nightly build for the kdeutils modules. That's how you do it:&lt;br /&gt;
&lt;br /&gt;
* Go to http://my.cdash.org and register&lt;br /&gt;
* Once registered, subscribe to the kdeutils project&lt;br /&gt;
* Checkout KDE/kdesdk/cmake/nightly-support/ from KDE svn. There, in the KDE/ subdirectory is a ctest-script ready to use for each KDE module.&lt;br /&gt;
* Write a shell script which sets the CMAKE_PREFIX_PATH environment variable so that CMake will find everything required and then execute ctest with the KDEUtilsNightly.cmake script. This will look something like the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
  CMAKE_PREFIX_PATH=/opt/kde-qt:/opt/phonon:/what/ever/else/you/need&lt;br /&gt;
  ctest -V -S /where/you/checked/out/KDE/KDEUtilsNightly.cmake,KDE_CTEST_BUILD_SUFFIX=gcc-4.2.3&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That's it basically. The -V option for ctest makes ctest verbose, so you can see what it's doing. The KDE_CTEST_BUILD_SUFFIX will be appended to the buildname displayed at http://my.cdash.org/index.php?project=kdeutils. Setting it to the used compiler is a sensible choice.&lt;br /&gt;
&lt;br /&gt;
* Set up a cron job which runs this script every day:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
  $ crontab -e&lt;br /&gt;
  00 22 * * * /where/is/my/script/run_kdeutils_nightly.sh&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That's it. Probably you first want to run the script manually a few times until everything works, but after that you can just have it executed via cron.&lt;br /&gt;
The next day you should then see your results on http://my.cdash.org.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to contribute Nightly builds for more than one KDE module, it gets a little bit more complicated. You have to make sure that the modules are built in the right order, and that the modules are installed correctly, if other modules depend on them. For examples see kdesdk/cmake/nightly-support/example-scripts/, e.g. [http://websvn.kde.org/*checkout*/trunk/KDE/kdesdk/cmake/nightly-support/example-scripts/Nightlys-2.6.2 Nightlys-2.6.2] is the shell script I use on my machine to build (and install where necessary) all KDE modules on my Linux machine.&lt;br /&gt;
&lt;br /&gt;
== How to do it under Windows ==&lt;br /&gt;
&lt;br /&gt;
Nobody has done this yet for KDE, but it should be quite similar. If you intend to do this, please contact the kde-buildsystem mailing list, we will do our best to get it working quickly.&lt;br /&gt;
&lt;br /&gt;
= How to get notification emails =&lt;br /&gt;
&lt;br /&gt;
So, you don't want to/cannot submit a Nightly build, but you want to receive notification emails from CDash if the compilation of one of the projects fails or if test cases fail.&lt;br /&gt;
&lt;br /&gt;
If that's the case, you need to &lt;br /&gt;
* Go to http://my.cdash.org and register. You will get a confirmation email.&lt;br /&gt;
* Once you have a valid login at http://my.cdash.org, go there&lt;br /&gt;
** Login&lt;br /&gt;
** Click the &amp;quot;My CDash&amp;quot; link in the top left corner&lt;br /&gt;
** Then, click &amp;quot;Show public projects&amp;quot;&lt;br /&gt;
** Search the project you are interested in and click &amp;quot;Subscribe&amp;quot;&lt;br /&gt;
** Go to the &amp;quot;Email preference&amp;quot; and &amp;quot;Email category&amp;quot; tabs and configure what emails you want to receive.&lt;br /&gt;
&lt;br /&gt;
That's all. Now you should receive notification emails whenever problems in this project occur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= How to get help=&lt;br /&gt;
&lt;br /&gt;
If you have any questions regarding Nightly or Continuous builds for KDE or about CDash or CTest in general, please ask on the [https://mail.kde.org/mailman/listinfo/kde-buildsystem kde-buildsystem] or [https://mail.kde.org/mailman/listinfo/kde-core-devel kde-core-devel] KDE mailing lists, or also on the [http://public.kitware.com/cgi-bin/mailman/listinfo/cdash CDash mailing list].&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/CMake</id>
		<title>Development/CMake</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/CMake"/>
				<updated>2010-03-26T18:24:19Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Development/CMake}}&lt;br /&gt;
&lt;br /&gt;
This is the central directory of all [http://www.cmake.org CMake]-related pages on TechBase.&lt;br /&gt;
&lt;br /&gt;
== KDE4 Specific CMake Documentation==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/CMake|CMake tutorial]]&lt;br /&gt;
:''An introduction to using CMake for KDE4''&lt;br /&gt;
&lt;br /&gt;
;[[Development/CMake_FAQ|KDE's CMake FAQ]]&lt;br /&gt;
:''Some Frequently Asked Questions''&lt;br /&gt;
&lt;br /&gt;
;[http://api.kde.org/cmake/modules.html KDE CMake modules API]&lt;br /&gt;
:''Documentation for all CMake modules in kdelibs (generated from kdelibs svn)''&lt;br /&gt;
&lt;br /&gt;
;[[Development/CMake/DashboardBuilds|Nightly dashboard builds for KDE]]&lt;br /&gt;
: ''Describes the quality dashboard for KDE and how to set up Nightly builds for it''&lt;br /&gt;
&lt;br /&gt;
;[[Development/CMake/Addons for KDE|KDE4 CMake Buildtypes, macros and variables]]&lt;br /&gt;
:''Documentation for the buildtypes (debugfull, release, ...), macros and variables for building KDE4 software, provided by FindKDE4Internal.cmake (manually written)''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tools/Automoc4|Automoc4]]&lt;br /&gt;
:''Automoc4 documentation.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Policies==&lt;br /&gt;
&lt;br /&gt;
;[[Policies/CMake_and_Source_Compatibility|Source compatiblity with CMake]]&lt;br /&gt;
:''This page discusses what has to be taken care of in order to stay source compatible on the CMake level.''&lt;br /&gt;
&lt;br /&gt;
;[[Policies/CMake_Coding_Style|Coding style for CMake files]]&lt;br /&gt;
:''Some guidelines how to write CMake scripts in KDE.''&lt;br /&gt;
&lt;br /&gt;
;[[Policies/CMake_Commit_Policy|Commit Policy for kdelibs/cmake/modules/]]&lt;br /&gt;
:''The files in kdelibs/cmake/modules/ are part of the public interface of KDE, some special policies apply to committing there.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Changelog for KDE's CMake buildsystem==&lt;br /&gt;
&lt;br /&gt;
;[[Development/CMake_KDE_4_4 |Changes in the buildsystem with KDE 4.4]]&lt;br /&gt;
:''What has changed in KDE 4.4 compared to KDE 4.3''&lt;br /&gt;
&lt;br /&gt;
;[[Development/CMake_KDE_4_3 |Changes in the buildsystem with KDE 4.3]]&lt;br /&gt;
:''What has changed in KDE 4.3 compared to KDE 4.2''&lt;br /&gt;
&lt;br /&gt;
;[[Development/CMake_KDE_4_2 |Changes in the buildsystem with KDE 4.2]]&lt;br /&gt;
:''What has changed in KDE 4.2 compared to KDE 4.0/4.1''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==More Places to learn about CMake==&lt;br /&gt;
&lt;br /&gt;
Here are some good places to learn about CMake in general:&lt;br /&gt;
* [http://www.cmake.org/HTML/Documentation.html CMake Manual]&lt;br /&gt;
* [http://www.cmake.org/Wiki/CMake CMake Wiki]&lt;br /&gt;
* [http://www.cmake.org/Wiki/CMake_HowToDoPlatformChecks CMake System Checks ]&lt;br /&gt;
* [http://www.cmake.org/Wiki/CMake_HowToFindInstalledSoftware Finding Optional Packages ]&lt;br /&gt;
* [http://www.cmake.org/Wiki/HowToBuildKDE4Software KDE 4 Tutorial at the CMake Wiki ]&lt;br /&gt;
* [http://www.cmake.org/Wiki/CMake_FAQ CMake FAQ]&lt;br /&gt;
* [http://www.elpauer.org/stuff/learning_cmake.pdf Slides for the &amp;quot;Learning CMake&amp;quot; seminar]&lt;br /&gt;
* [http://mail.kde.org/pipermail/kde-buildsystem/ The kde-buildsystem Mailing List Archive]&lt;br /&gt;
&lt;br /&gt;
Also, consider joining the [http://www.cmake.org/mailman/listinfo/cmake CMake mailing list].&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/CMake</id>
		<title>Development/CMake</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/CMake"/>
				<updated>2010-03-26T18:22:13Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Development/CMake}}&lt;br /&gt;
&lt;br /&gt;
This is the central directory of all [http://www.cmake.org CMake]-related pages on TechBase.&lt;br /&gt;
&lt;br /&gt;
== KDE4 Specific CMake Documentation==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/CMake|CMake tutorial]]&lt;br /&gt;
:''An introduction to using CMake for KDE4''&lt;br /&gt;
&lt;br /&gt;
;[[Development/CMake_FAQ|KDE's CMake FAQ]]&lt;br /&gt;
:''Some Frequently Asked Questions''&lt;br /&gt;
&lt;br /&gt;
;[http://api.kde.org/cmake/modules.html KDE CMake modules API]&lt;br /&gt;
:''Documentation for all CMake modules in kdelibs (generated from kdelibs svn)''&lt;br /&gt;
&lt;br /&gt;
;[[Development/CMake/DashboardBuilds|Nightly dashboard builds for KDE]]&lt;br /&gt;
: ''Describes the quality dashboard for KDE and how to set up Nightly builds for it''&lt;br /&gt;
&lt;br /&gt;
;[[Development/CMake/Addons for KDE|KDE4 CMake Buildtypes, macros and variables]]&lt;br /&gt;
:''Documentation for the buildtypes (debugfull, release, ...), macros and variables for building KDE4 software, provided by FindKDE4Internal.cmake (manually written)''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tools/Automoc4|Automoc4]]&lt;br /&gt;
:''Automoc4 documentation.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Policies==&lt;br /&gt;
&lt;br /&gt;
;[[Policies/CMake_and_Source_Compatibility|Source compatiblity with CMake]]&lt;br /&gt;
:''This page discusses what has to be taken care of in order to stay source compatible on the CMake level.''&lt;br /&gt;
&lt;br /&gt;
;[[Policies/CMake_Coding_Style|Coding style for CMake files]]&lt;br /&gt;
:''Some guidelines how to write CMake scripts in KDE.''&lt;br /&gt;
&lt;br /&gt;
;[[Policies/CMake_Commit_Policy|Commit Policy for kdelibs/cmake/modules/]]&lt;br /&gt;
:''The files in kdelibs/cmake/modules/ are part of the public interface of KDE, some special policies apply to committing there.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Changes in the CMake buildsystem==&lt;br /&gt;
;[[Development/CMake_KDE_4_2 |Changes in the buildsystem with KDE 4.2]]&lt;br /&gt;
:''What has changed in KDE 4.2 compared to KDE 4.0/4.1''&lt;br /&gt;
&lt;br /&gt;
;[[Development/CMake_KDE_4_3 |Changes in the buildsystem with KDE 4.3]]&lt;br /&gt;
:''What has changed in KDE 4.3 compared to KDE 4.2''&lt;br /&gt;
&lt;br /&gt;
;[[Development/CMake_KDE_4_4 |Changes in the buildsystem with KDE 4.4]]&lt;br /&gt;
:''What has changed in KDE 4.4 compared to KDE 4.3''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==More Places to learn about CMake==&lt;br /&gt;
&lt;br /&gt;
Here are some good places to learn about CMake in general:&lt;br /&gt;
* [http://www.cmake.org/HTML/Documentation.html CMake Manual]&lt;br /&gt;
* [http://www.cmake.org/Wiki/CMake CMake Wiki]&lt;br /&gt;
* [http://www.cmake.org/Wiki/CMake_HowToDoPlatformChecks CMake System Checks ]&lt;br /&gt;
* [http://www.cmake.org/Wiki/CMake_HowToFindInstalledSoftware Finding Optional Packages ]&lt;br /&gt;
* [http://www.cmake.org/Wiki/HowToBuildKDE4Software KDE 4 Tutorial at the CMake Wiki ]&lt;br /&gt;
* [http://www.cmake.org/Wiki/CMake_FAQ CMake FAQ]&lt;br /&gt;
* [http://www.elpauer.org/stuff/learning_cmake.pdf Slides for the &amp;quot;Learning CMake&amp;quot; seminar]&lt;br /&gt;
* [http://mail.kde.org/pipermail/kde-buildsystem/ The kde-buildsystem Mailing List Archive]&lt;br /&gt;
&lt;br /&gt;
Also, consider joining the [http://www.cmake.org/mailman/listinfo/cmake CMake mailing list].&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/CMake/Addons_for_KDE</id>
		<title>Development/CMake/Addons for KDE</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/CMake/Addons_for_KDE"/>
				<updated>2010-03-26T18:18:45Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A page to document the variables, macros and other useful stuff we have to use CMake as the KDE4 buildsystem.&lt;br /&gt;
&lt;br /&gt;
You may also want to visit the automatically generated documentation for  [http://api.kde.org/cmake/modules.html#module_FindKDE4Internal FindKDE4Internal.cmake], which is generated directly from the current FindKDE4Internal.cmake and may be more up-to-date.&lt;br /&gt;
&lt;br /&gt;
== Buildtypes==&lt;br /&gt;
CMake supports different build types for compiling the source code.&lt;br /&gt;
The following built-in build types are available to the CMake buildsystem:&lt;br /&gt;
&lt;br /&gt;
{{note|The build types are '''case-sensitive'''.  This may be fixed in the future however, so don't rely on this behavior.}}&lt;br /&gt;
&lt;br /&gt;
;Release: optimized for speed, no debug symbols or qDebug/kDebug messages, no asserts&lt;br /&gt;
;RelWithDebInfo: similiar to ''release'', but with debug symbols for backtraces (-g)&lt;br /&gt;
;Debug: optimized for speed, but debuggable and with debug symbols for backtraces (-g)&lt;br /&gt;
;debugfull: no optimizations, full debug support (-g3)&lt;br /&gt;
;Profile: adds coverage flags (-ftest-coverage -fprofile-arcs) to debugfull &lt;br /&gt;
;None: the build flags are manually set using the CMAKE_CXX_FLAGS option.&lt;br /&gt;
&lt;br /&gt;
You can tell CMake the desired build type by passing the relevant type as command line option, for instance:&lt;br /&gt;
 cmake /path/to/source -DCMAKE_BUILD_TYPE=debugfull&lt;br /&gt;
The default value is ''RelWithDebInfo''.&lt;br /&gt;
&lt;br /&gt;
=== Debugging Features in Detail ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! CMAKE_BUILD_TYPE !! Optimized !! Symbols !! qDebug || kDebug !! Asserts&lt;br /&gt;
|-&lt;br /&gt;
| Release||yes||no||no||no||no&lt;br /&gt;
|-&lt;br /&gt;
| RelWithDebInfo||yes||yes||no||no||no&lt;br /&gt;
|-&lt;br /&gt;
| Debug||yes||yes||yes||yes||yes&lt;br /&gt;
|-&lt;br /&gt;
| debugfull||no||yes||yes||yes||yes&lt;br /&gt;
|-&lt;br /&gt;
| Profile||no||yes||yes||yes||yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Implementation Notes ===&lt;br /&gt;
Please refer to [http://websvn.kde.org/*checkout*/trunk/KDE/kdelibs/cmake/modules/FindKDE4Internal.cmake FindKDE4Internal.cmake] for further details and the actual flags used.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
===The tools required to compile KDE software===&lt;br /&gt;
&lt;br /&gt;
* '''KDE4_KCFGC_EXECUTABLE'''    - the kconfig_compiler executable&lt;br /&gt;
* '''KDE4_AUTOMOC_EXECUTABLE'''  - the kde4automoc executable&lt;br /&gt;
* '''KDE4_MEINPROC_EXECUTABLE''' - the meinproc4 executable&lt;br /&gt;
* '''KDE4_MAKEKDEWIDGETS_EXECUTABLE''' - the makekdewidgets executable&lt;br /&gt;
&lt;br /&gt;
===The location of the KDE libraries===&lt;br /&gt;
* '''KDE4_KDECORE_LIBS'''          - the kdecore library and all depending libraries&lt;br /&gt;
* '''KDE4_KDEUI_LIBS'''            - the kdeui library and all depending libraries&lt;br /&gt;
* '''KDE4_KIO_LIBS'''              - the kio library and all depending libraries&lt;br /&gt;
* '''KDE4_KPARTS_LIBS'''           - the kparts library and all depending libraries&lt;br /&gt;
* '''KDE4_KUTILS_LIBS'''           - the kutils library and all depending libraries&lt;br /&gt;
* '''KDE4_KDE3SUPPORT_LIBS'''      - the kde3support library and all depending libraries&lt;br /&gt;
* '''KDE4_KFILE_LIBS'''            - the kfile library and all depending libraries&lt;br /&gt;
* '''KDE4_KHTML_LIBS'''            - the khtml library and all depending libraries&lt;br /&gt;
* '''KDE4_KJS_LIBS'''              - the kjs library and all depending libraries&lt;br /&gt;
* '''KDE4_KNEWSTUFF2_LIBS'''       - the knewstuff2 library and all depending libraries&lt;br /&gt;
* '''KDE4_KDEPRINT_LIBS'''         - the kdeprint library and all depending libraries&lt;br /&gt;
* '''KDE4_KDNSSD_LIBS'''           - the kdnssd library and all depending libraries&lt;br /&gt;
* '''KDE4_KDESU_LIBS'''            - the kdesu library and all depending libraries&lt;br /&gt;
* '''KDE4_PHONON_LIBS'''           - the phonon library and all depending librairies&lt;br /&gt;
* '''KDE4_KDEFX_LIBS'''            - the kdefx library and all depending librairies&lt;br /&gt;
* '''KDE4_THREADWEAVER_LIBRARIES''' - the threadweaver library and all depending libraries&lt;br /&gt;
* '''KDE4_SOLID_LIBS'''            - the solid library and all depending libraries&lt;br /&gt;
* '''KDE4_KNOTIFYCONFIG_LIBS'''    - the knotify config library and all depending libraries&lt;br /&gt;
* '''KDE4_KROSSCORE_LIBS'''        - the kross core library and all depending libraries&lt;br /&gt;
* '''KDE4_KROSSUI_LIBS'''          - the kross ui library which includes core and all depending libraries&lt;br /&gt;
* '''KDE4_KTEXTEDITOR_LIBS'''      - the ktexteditor library and all depending libraries&lt;br /&gt;
* '''KDE4_KNEPOMUK_LIBS'''         - the knepomuk library and all depending libraries&lt;br /&gt;
* '''KDE4_KMETADATA_LIBS'''        - the kmetadata library and all depending libraries&lt;br /&gt;
&lt;br /&gt;
===The locations of install directories===&lt;br /&gt;
&lt;br /&gt;
They are all interpreted relative to CMAKE_INSTALL_PREFIX&lt;br /&gt;
&lt;br /&gt;
* '''BIN_INSTALL_DIR'''          - the directory where executables be installed (default is {{path|prefix/bin}})&lt;br /&gt;
* '''SBIN_INSTALL_DIR'''         - the directory where system executables will be installed (default is {{path|prefix/sbin}})&lt;br /&gt;
* '''LIB_INSTALL_DIR'''          - the directory where libraries will be installed (default is prefix/lib)&lt;br /&gt;
* '''CONFIG_INSTALL_DIR'''       - the config file install dir&lt;br /&gt;
* '''DATA_INSTALL_DIR'''         - the parent directory where applications can install their data&lt;br /&gt;
* '''HTML_INSTALL_DIR'''         - the HTML install dir for documentation&lt;br /&gt;
* '''ICON_INSTALL_DIR'''         - the icon install dir (default is {{path|prefix/share/icons}})&lt;br /&gt;
* '''INFO_INSTALL_DIR'''         - the kde info install dir (default is {{path|prefix/info}})&lt;br /&gt;
* '''KCFG_INSTALL_DIR'''         - the install dir for kconfig files&lt;br /&gt;
* '''LOCALE_INSTALL_DIR'''       - the install dir for translations&lt;br /&gt;
* '''MAN_INSTALL_DIR'''          - the kde man page install dir (default is {{path|prefix/man}})&lt;br /&gt;
* '''MIME_INSTALL_DIR'''         - the install dir for the mimetype desktop files&lt;br /&gt;
* '''PLUGIN_INSTALL_DIR'''       - the subdirectory relative to the install prefix where plugins will be installed (default is {{path|${KDE4_LIB_INSTALL_DIR}/kde4}})&lt;br /&gt;
* '''SERVICES_INSTALL_DIR'''     - the install dir for service (desktop, protocol, ...) files&lt;br /&gt;
* '''SERVICETYPES_INSTALL_DIR''' - the install dir for servicestypes desktop files&lt;br /&gt;
* '''SOUND_INSTALL_DIR'''        - the install dir for sound files&lt;br /&gt;
* '''TEMPLATES_INSTALL_DIR'''    - the install dir for templates (Create new file...)&lt;br /&gt;
* '''WALLPAPER_INSTALL_DIR'''    - the install dir for wallpapers&lt;br /&gt;
* '''KCONF_UPDATE_INSTALL_DIR''' - the kconf_update install dir&lt;br /&gt;
* '''XDG_APPS_INSTALL_DIR'''     - the XDG apps dir&lt;br /&gt;
* '''XDG_DIRECTORY_INSTALL_DIR''' - the XDG directory&lt;br /&gt;
* '''XDG_MIME_INSTALL_DIR'''     - the XDG mimetypes install dir&lt;br /&gt;
* '''DBUS_INTERFACES_INSTALL_DIR''' - the directory where dbus interfaces be installed (default is {{path|prefix/share/dbus-1/interfaces}})&lt;br /&gt;
* '''DBUS_SERVICES_INSTALL_DIR''' - the directory where dbus services be installed (default is {{path|prefix/share/dbus-1/services}})&lt;br /&gt;
&lt;br /&gt;
== Macros ==&lt;br /&gt;
&lt;br /&gt;
Lots of useful macros: (Question: Is there a URL to download these macros?)&lt;br /&gt;
&lt;br /&gt;
* '''KDE4_ADD_UI_FILES (SRCS_VAR file1.ui ... fileN.ui)'''&lt;br /&gt;
&lt;br /&gt;
Use this to add Qt designer ui files to your application/library.&lt;br /&gt;
&lt;br /&gt;
* '''KDE4_ADD_UI3_FILES (SRCS_VAR file1.ui ... fileN.ui)'''&lt;br /&gt;
&lt;br /&gt;
Use this to add Qt designer ui files from Qt version 3 to your application/library.&lt;br /&gt;
&lt;br /&gt;
* '''KDE4_ADD_KCFG_FILES (SRCS_VAR [GENERATE_MOC] file1.kcfgc ... fileN.kcfgc)'''&lt;br /&gt;
&lt;br /&gt;
Use this to add KDE config compiler files to your application/library.&lt;br /&gt;
&lt;br /&gt;
Use optional GENERATE_MOC to generate moc if you use signals in your kcfg files.&lt;br /&gt;
&lt;br /&gt;
* '''KDE4_ADD_WIDGET_FILES (SRCS_VAR file1.widgets ... fileN.widgets)'''&lt;br /&gt;
&lt;br /&gt;
Use this to add widget description files for the makekdewidgets code generator for Qt Designer plugins.&lt;br /&gt;
&lt;br /&gt;
* '''KDE4_ADD_PLUGIN ( name [WITH_PREFIX] file1 ... fileN )'''&lt;br /&gt;
&lt;br /&gt;
Create a KDE plugin (KPart, kioslave, etc.) from the given source files.&lt;br /&gt;
&lt;br /&gt;
It supports KDE4_ENABLE_FINAL.&lt;br /&gt;
&lt;br /&gt;
If WITH_PREFIX is given, the resulting plugin will have the prefix &amp;quot;lib&amp;quot;, otherwise it won't.&lt;br /&gt;
&lt;br /&gt;
It creates and installs an appropriate libtool la-file.&lt;br /&gt;
&lt;br /&gt;
* '''KDE4_ADD_KDEINIT_EXECUTABLE (name [NOGUI] [RUN_UNINSTALLED] file1 ... fileN)'''&lt;br /&gt;
&lt;br /&gt;
Create a KDE application in the form of a module loadable via kdeinit.&lt;br /&gt;
&lt;br /&gt;
A library named kdeinit_&amp;lt;name&amp;gt; will be created and a small executable which links to it.&lt;br /&gt;
    &lt;br /&gt;
It supports KDE4_ENABLE_FINAL&lt;br /&gt;
    &lt;br /&gt;
If the executable has to be run from the buildtree (e.g. unit tests and code generators used later on when compiling), set the option RUN_UNINSTALLED.&lt;br /&gt;
    &lt;br /&gt;
If the executable doesn't have a GUI, use the option NOGUI. By default on OS X application bundles are created, with the NOGUI option no bundles but simple executables are created. Currently it doesn't have any effect on other platforms.&lt;br /&gt;
&lt;br /&gt;
* '''KDE4_ADD_EXECUTABLE (name [NOGUI] [RUN_UNINSTALLED] file1 ... fileN)'''&lt;br /&gt;
&lt;br /&gt;
Equivalent to ADD_EXECUTABLE(), but additionally adds some more features:&lt;br /&gt;
&lt;br /&gt;
 ** support for KDE4_ENABLE_FINAL&lt;br /&gt;
 ** support for automoc&lt;br /&gt;
 ** automatic RPATH handling&lt;br /&gt;
&lt;br /&gt;
If the executable has to be run from the buildtree (e.g. unit tests and code generators used later on when compiling), set the option RUN_UNINSTALLED.&lt;br /&gt;
&lt;br /&gt;
If the executable doesn't have a GUI, use the option NOGUI. By default on OS X application bundles are created, with the NOGUI option no bundles but simple executables are created. Currently it doesn't have any effect on other platforms.&lt;br /&gt;
&lt;br /&gt;
* '''KDE4_ADD_LIBRARY (name [STATIC | SHARED | MODULE ] file1 ... fileN)'''&lt;br /&gt;
&lt;br /&gt;
Equivalent to ADD_LIBRARY(), but additionally it supports KDE4_ENABLE_FINAL and under Windows it adds a -DMAKE_&amp;lt;name&amp;gt;_LIB definition to the compilation.&lt;br /&gt;
&lt;br /&gt;
* '''KDE4_ADD_UNIT_TEST (testname [TESTNAME targetname] file1 ... fileN)'''&lt;br /&gt;
&lt;br /&gt;
Add a unit test, which is executed when running make test&lt;br /&gt;
&lt;br /&gt;
It will be built with RPATH pointing to the build dir&lt;br /&gt;
&lt;br /&gt;
The targets are always created, but only built for the &amp;quot;all&amp;quot; target if the option KDE4_BUILD_TESTS is enabled. Otherwise the rules for the target are created but not built by default. You can build them by manually building the target.&lt;br /&gt;
&lt;br /&gt;
The name of the target can be specified using TESTNAME &amp;lt;targetname&amp;gt;, if it is not given the macro will default to the &amp;lt;testname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''KDE4_ADD_TEST_EXECUTABLE (name file1 ... fileN)'''&lt;br /&gt;
&lt;br /&gt;
Add a test executable&lt;br /&gt;
&lt;br /&gt;
It will be built with RPATH pointing to the build dir&lt;br /&gt;
&lt;br /&gt;
The targets are always created, but only built for the &amp;quot;all&amp;quot; target if the option KDE4_BUILD_TESTS is enabled. Otherwise the rules for the target are created but not built by default. You can build them by manually building the target.&lt;br /&gt;
&lt;br /&gt;
KDESRCDIR is set to the source directory of the test, this can be used with KGlobal::dirs()-&amp;gt;addResourceDir( &amp;quot;data&amp;quot;, KDESRCDIR ); to be able to use xmlgui and other things in the test, that normally require installation&lt;br /&gt;
&lt;br /&gt;
* '''KDE4_UPDATE_ICONCACHE()'''&lt;br /&gt;
&lt;br /&gt;
Notifies the icon cache that new icons have been installed by updating mtime of ${ICON_INSTALL_DIR}/hicolor directory.&lt;br /&gt;
&lt;br /&gt;
* '''KDE4_INSTALL_ICONS(path theme)'''&lt;br /&gt;
&lt;br /&gt;
Installs all png and svgz files in the current directory to the icon directory given in path, in the subdirectory for the given icon theme.&lt;br /&gt;
&lt;br /&gt;
* '''KDE4_ADD_APP_ICON(appsources pattern)'''&lt;br /&gt;
&lt;br /&gt;
Mac OS X and Windows only: Adds application icon to target source list. This macro adds an application icon to the specified target. Mac OS X notes: the application icon is added to a Mac OS X bundle so that Finder and friends show the right thing. You need to provide a 128x128 version of the icon for this to work. Windows notes: the application icon(s) are compiled into the application binary. &lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
# 'appsources'  - specifies the list of source files &lt;br /&gt;
# 'pattern'     - regular expression for searching application icons &lt;br /&gt;
&lt;br /&gt;
Examples: KDE4_ADD_APP_ICON(myapp_sources &amp;quot;pics/cr*-myapp.png&amp;quot;) or KDE4_ADD_APP_ICON(myapp_sources &amp;quot;${KDE4_INSTALL_DIR}/share/icons/oxygen/*/apps/myapp.png&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
* '''KDE4_CREATE_HANDBOOK( docbookfile )'''&lt;br /&gt;
&lt;br /&gt;
Create the handbook from the docbookfile (using meinproc)&lt;br /&gt;
&lt;br /&gt;
* '''KDE4_SET_CUSTOM_TARGET_PROPERTY''' - deprecated, do not use&lt;br /&gt;
* '''KDE4_GET_CUSTOM_TARGET_PROPERTY''' - deprecated, do not use&lt;br /&gt;
* '''KDE4_MOC_HEADERS'''&lt;br /&gt;
* '''KDE4_HANDLE_AUTOMOC'''&lt;br /&gt;
* '''KDE4_CREATE_FINAL_FILES'''&lt;br /&gt;
* '''KDE4_REMOVE_OBSOLETE_CMAKE_FILES'''&lt;br /&gt;
* '''KDE4_NO_ENABLE_FINAL'''&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/CMake</id>
		<title>Development/CMake</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/CMake"/>
				<updated>2010-03-26T18:15:12Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: /* KDE4 Specific CMake Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Development/CMake}}&lt;br /&gt;
&lt;br /&gt;
This is the central directory of all [http://www.cmake.org CMake]-related pages on TechBase.&lt;br /&gt;
&lt;br /&gt;
== KDE4 Specific CMake Documentation==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/CMake|CMake tutorial]]&lt;br /&gt;
:''An introduction to using CMake for KDE4''&lt;br /&gt;
&lt;br /&gt;
;[[Development/CMake_FAQ|KDE's CMake FAQ]]&lt;br /&gt;
:''Some Frequently Asked Questions''&lt;br /&gt;
&lt;br /&gt;
;[[Development/CMake_KDE_4_2 |Changes in the buildsystem with KDE 4.2]]&lt;br /&gt;
:''What has changed in KDE 4.2 compared to KDE 4.0/4.1''&lt;br /&gt;
;[[Development/CMake_KDE_4_3 |Changes in the buildsystem with KDE 4.3]]&lt;br /&gt;
:''What has changed in KDE 4.3 compared to KDE 4.2''&lt;br /&gt;
;[[Development/CMake_KDE_4_4 |Changes in the buildsystem with KDE 4.4]]&lt;br /&gt;
:''What has changed in KDE 4.4 compared to KDE 4.3''&lt;br /&gt;
&lt;br /&gt;
;[[Policies/CMake_and_Source_Compatibility|Source compatiblity with CMake]]&lt;br /&gt;
:''This page discusses what has to be taken care of in order to stay source compatible on the CMake level.''&lt;br /&gt;
&lt;br /&gt;
;[[Policies/CMake_Coding_Style|Coding style for CMake files]]&lt;br /&gt;
:''Some guidelines how to write CMake scripts in KDE.''&lt;br /&gt;
&lt;br /&gt;
;[[Policies/CMake_Commit_Policy|Commit Policy for kdelibs/cmake/modules/]]&lt;br /&gt;
:''The files in kdelibs/cmake/modules/ are part of the public interface of KDE, some special policies apply to committing there.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tools/Automoc4|Automoc4]]&lt;br /&gt;
:''Automoc4 documentation.''&lt;br /&gt;
&lt;br /&gt;
;[http://api.kde.org/cmake/modules.html KDE CMake modules API]&lt;br /&gt;
:''Documentation for all CMake modules in kdelibs (generated from kdelibs svn)''&lt;br /&gt;
&lt;br /&gt;
;[[Development/CMake/DashboardBuilds|Nightly dashboard builds for KDE]]&lt;br /&gt;
: ''Describes the quality dashboard for KDE and how to set up Nightly builds for it''&lt;br /&gt;
&lt;br /&gt;
;[[Development/CMake/Addons for KDE|KDE4 CMake Buildtypes, macros and variables]]&lt;br /&gt;
:''Documentation for the buildtypes (debugfull, release, ...), macros and variables for building KDE4 software, provided by FindKDE4Internal.cmake (manually written)''&lt;br /&gt;
&lt;br /&gt;
==More Places to learn about CMake==&lt;br /&gt;
&lt;br /&gt;
Here are some good places to learn about CMake in general:&lt;br /&gt;
* [http://www.cmake.org/HTML/Documentation.html CMake Manual]&lt;br /&gt;
* [http://www.cmake.org/Wiki/CMake CMake Wiki]&lt;br /&gt;
* [http://www.cmake.org/Wiki/CMake_HowToDoPlatformChecks CMake System Checks ]&lt;br /&gt;
* [http://www.cmake.org/Wiki/CMake_HowToFindInstalledSoftware Finding Optional Packages ]&lt;br /&gt;
* [http://www.cmake.org/Wiki/HowToBuildKDE4Software KDE 4 Tutorial at the CMake Wiki ]&lt;br /&gt;
* [http://www.cmake.org/Wiki/CMake_FAQ CMake FAQ]&lt;br /&gt;
* [http://www.elpauer.org/stuff/learning_cmake.pdf Slides for the &amp;quot;Learning CMake&amp;quot; seminar]&lt;br /&gt;
* [http://mail.kde.org/pipermail/kde-buildsystem/ The kde-buildsystem Mailing List Archive]&lt;br /&gt;
&lt;br /&gt;
Also, consider joining the [http://www.cmake.org/mailman/listinfo/cmake CMake mailing list].&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/CMake/Addons_for_KDE</id>
		<title>Development/CMake/Addons for KDE</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/CMake/Addons_for_KDE"/>
				<updated>2010-03-26T18:13:05Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A page to document the variables, macros and other useful stuff we have to use CMake as the KDE4 buildsystem.&lt;br /&gt;
&lt;br /&gt;
== Buildtypes==&lt;br /&gt;
CMake supports different build types for compiling the source code.&lt;br /&gt;
The following built-in build types are available to the CMake buildsystem:&lt;br /&gt;
&lt;br /&gt;
{{note|The build types are '''case-sensitive'''.  This may be fixed in the future however, so don't rely on this behavior.}}&lt;br /&gt;
&lt;br /&gt;
;Release: optimized for speed, no debug symbols or qDebug/kDebug messages, no asserts&lt;br /&gt;
;RelWithDebInfo: similiar to ''release'', but with debug symbols for backtraces (-g)&lt;br /&gt;
;Debug: optimized for speed, but debuggable and with debug symbols for backtraces (-g)&lt;br /&gt;
;debugfull: no optimizations, full debug support (-g3)&lt;br /&gt;
;Profile: adds coverage flags (-ftest-coverage -fprofile-arcs) to debugfull &lt;br /&gt;
;None: the build flags are manually set using the CMAKE_CXX_FLAGS option.&lt;br /&gt;
&lt;br /&gt;
You can tell CMake the desired build type by passing the relevant type as command line option, for instance:&lt;br /&gt;
 cmake /path/to/source -DCMAKE_BUILD_TYPE=debugfull&lt;br /&gt;
The default value is ''RelWithDebInfo''.&lt;br /&gt;
&lt;br /&gt;
=== Debugging Features in Detail ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! CMAKE_BUILD_TYPE !! Optimized !! Symbols !! qDebug || kDebug !! Asserts&lt;br /&gt;
|-&lt;br /&gt;
| Release||yes||no||no||no||no&lt;br /&gt;
|-&lt;br /&gt;
| RelWithDebInfo||yes||yes||no||no||no&lt;br /&gt;
|-&lt;br /&gt;
| Debug||yes||yes||yes||yes||yes&lt;br /&gt;
|-&lt;br /&gt;
| debugfull||no||yes||yes||yes||yes&lt;br /&gt;
|-&lt;br /&gt;
| Profile||no||yes||yes||yes||yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Implementation Notes ===&lt;br /&gt;
Please refer to [http://websvn.kde.org/*checkout*/trunk/KDE/kdelibs/cmake/modules/FindKDE4Internal.cmake FindKDE4Internal.cmake] for further details and the actual flags used.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
===The tools required to compile KDE software===&lt;br /&gt;
&lt;br /&gt;
* '''KDE4_KCFGC_EXECUTABLE'''    - the kconfig_compiler executable&lt;br /&gt;
* '''KDE4_AUTOMOC_EXECUTABLE'''  - the kde4automoc executable&lt;br /&gt;
* '''KDE4_MEINPROC_EXECUTABLE''' - the meinproc4 executable&lt;br /&gt;
* '''KDE4_MAKEKDEWIDGETS_EXECUTABLE''' - the makekdewidgets executable&lt;br /&gt;
&lt;br /&gt;
===The location of the KDE libraries===&lt;br /&gt;
* '''KDE4_KDECORE_LIBS'''          - the kdecore library and all depending libraries&lt;br /&gt;
* '''KDE4_KDEUI_LIBS'''            - the kdeui library and all depending libraries&lt;br /&gt;
* '''KDE4_KIO_LIBS'''              - the kio library and all depending libraries&lt;br /&gt;
* '''KDE4_KPARTS_LIBS'''           - the kparts library and all depending libraries&lt;br /&gt;
* '''KDE4_KUTILS_LIBS'''           - the kutils library and all depending libraries&lt;br /&gt;
* '''KDE4_KDE3SUPPORT_LIBS'''      - the kde3support library and all depending libraries&lt;br /&gt;
* '''KDE4_KFILE_LIBS'''            - the kfile library and all depending libraries&lt;br /&gt;
* '''KDE4_KHTML_LIBS'''            - the khtml library and all depending libraries&lt;br /&gt;
* '''KDE4_KJS_LIBS'''              - the kjs library and all depending libraries&lt;br /&gt;
* '''KDE4_KNEWSTUFF2_LIBS'''       - the knewstuff2 library and all depending libraries&lt;br /&gt;
* '''KDE4_KDEPRINT_LIBS'''         - the kdeprint library and all depending libraries&lt;br /&gt;
* '''KDE4_KDNSSD_LIBS'''           - the kdnssd library and all depending libraries&lt;br /&gt;
* '''KDE4_KDESU_LIBS'''            - the kdesu library and all depending libraries&lt;br /&gt;
* '''KDE4_PHONON_LIBS'''           - the phonon library and all depending librairies&lt;br /&gt;
* '''KDE4_KDEFX_LIBS'''            - the kdefx library and all depending librairies&lt;br /&gt;
* '''KDE4_THREADWEAVER_LIBRARIES''' - the threadweaver library and all depending libraries&lt;br /&gt;
* '''KDE4_SOLID_LIBS'''            - the solid library and all depending libraries&lt;br /&gt;
* '''KDE4_KNOTIFYCONFIG_LIBS'''    - the knotify config library and all depending libraries&lt;br /&gt;
* '''KDE4_KROSSCORE_LIBS'''        - the kross core library and all depending libraries&lt;br /&gt;
* '''KDE4_KROSSUI_LIBS'''          - the kross ui library which includes core and all depending libraries&lt;br /&gt;
* '''KDE4_KTEXTEDITOR_LIBS'''      - the ktexteditor library and all depending libraries&lt;br /&gt;
* '''KDE4_KNEPOMUK_LIBS'''         - the knepomuk library and all depending libraries&lt;br /&gt;
* '''KDE4_KMETADATA_LIBS'''        - the kmetadata library and all depending libraries&lt;br /&gt;
&lt;br /&gt;
===The locations of install directories===&lt;br /&gt;
&lt;br /&gt;
They are all interpreted relative to CMAKE_INSTALL_PREFIX&lt;br /&gt;
&lt;br /&gt;
* '''BIN_INSTALL_DIR'''          - the directory where executables be installed (default is {{path|prefix/bin}})&lt;br /&gt;
* '''SBIN_INSTALL_DIR'''         - the directory where system executables will be installed (default is {{path|prefix/sbin}})&lt;br /&gt;
* '''LIB_INSTALL_DIR'''          - the directory where libraries will be installed (default is prefix/lib)&lt;br /&gt;
* '''CONFIG_INSTALL_DIR'''       - the config file install dir&lt;br /&gt;
* '''DATA_INSTALL_DIR'''         - the parent directory where applications can install their data&lt;br /&gt;
* '''HTML_INSTALL_DIR'''         - the HTML install dir for documentation&lt;br /&gt;
* '''ICON_INSTALL_DIR'''         - the icon install dir (default is {{path|prefix/share/icons}})&lt;br /&gt;
* '''INFO_INSTALL_DIR'''         - the kde info install dir (default is {{path|prefix/info}})&lt;br /&gt;
* '''KCFG_INSTALL_DIR'''         - the install dir for kconfig files&lt;br /&gt;
* '''LOCALE_INSTALL_DIR'''       - the install dir for translations&lt;br /&gt;
* '''MAN_INSTALL_DIR'''          - the kde man page install dir (default is {{path|prefix/man}})&lt;br /&gt;
* '''MIME_INSTALL_DIR'''         - the install dir for the mimetype desktop files&lt;br /&gt;
* '''PLUGIN_INSTALL_DIR'''       - the subdirectory relative to the install prefix where plugins will be installed (default is {{path|${KDE4_LIB_INSTALL_DIR}/kde4}})&lt;br /&gt;
* '''SERVICES_INSTALL_DIR'''     - the install dir for service (desktop, protocol, ...) files&lt;br /&gt;
* '''SERVICETYPES_INSTALL_DIR''' - the install dir for servicestypes desktop files&lt;br /&gt;
* '''SOUND_INSTALL_DIR'''        - the install dir for sound files&lt;br /&gt;
* '''TEMPLATES_INSTALL_DIR'''    - the install dir for templates (Create new file...)&lt;br /&gt;
* '''WALLPAPER_INSTALL_DIR'''    - the install dir for wallpapers&lt;br /&gt;
* '''KCONF_UPDATE_INSTALL_DIR''' - the kconf_update install dir&lt;br /&gt;
* '''XDG_APPS_INSTALL_DIR'''     - the XDG apps dir&lt;br /&gt;
* '''XDG_DIRECTORY_INSTALL_DIR''' - the XDG directory&lt;br /&gt;
* '''XDG_MIME_INSTALL_DIR'''     - the XDG mimetypes install dir&lt;br /&gt;
* '''DBUS_INTERFACES_INSTALL_DIR''' - the directory where dbus interfaces be installed (default is {{path|prefix/share/dbus-1/interfaces}})&lt;br /&gt;
* '''DBUS_SERVICES_INSTALL_DIR''' - the directory where dbus services be installed (default is {{path|prefix/share/dbus-1/services}})&lt;br /&gt;
&lt;br /&gt;
== Macros ==&lt;br /&gt;
&lt;br /&gt;
Lots of useful macros: (Question: Is there a URL to download these macros?)&lt;br /&gt;
&lt;br /&gt;
* '''KDE4_ADD_UI_FILES (SRCS_VAR file1.ui ... fileN.ui)'''&lt;br /&gt;
&lt;br /&gt;
Use this to add Qt designer ui files to your application/library.&lt;br /&gt;
&lt;br /&gt;
* '''KDE4_ADD_UI3_FILES (SRCS_VAR file1.ui ... fileN.ui)'''&lt;br /&gt;
&lt;br /&gt;
Use this to add Qt designer ui files from Qt version 3 to your application/library.&lt;br /&gt;
&lt;br /&gt;
* '''KDE4_ADD_KCFG_FILES (SRCS_VAR [GENERATE_MOC] file1.kcfgc ... fileN.kcfgc)'''&lt;br /&gt;
&lt;br /&gt;
Use this to add KDE config compiler files to your application/library.&lt;br /&gt;
&lt;br /&gt;
Use optional GENERATE_MOC to generate moc if you use signals in your kcfg files.&lt;br /&gt;
&lt;br /&gt;
* '''KDE4_ADD_WIDGET_FILES (SRCS_VAR file1.widgets ... fileN.widgets)'''&lt;br /&gt;
&lt;br /&gt;
Use this to add widget description files for the makekdewidgets code generator for Qt Designer plugins.&lt;br /&gt;
&lt;br /&gt;
* '''KDE4_ADD_PLUGIN ( name [WITH_PREFIX] file1 ... fileN )'''&lt;br /&gt;
&lt;br /&gt;
Create a KDE plugin (KPart, kioslave, etc.) from the given source files.&lt;br /&gt;
&lt;br /&gt;
It supports KDE4_ENABLE_FINAL.&lt;br /&gt;
&lt;br /&gt;
If WITH_PREFIX is given, the resulting plugin will have the prefix &amp;quot;lib&amp;quot;, otherwise it won't.&lt;br /&gt;
&lt;br /&gt;
It creates and installs an appropriate libtool la-file.&lt;br /&gt;
&lt;br /&gt;
* '''KDE4_ADD_KDEINIT_EXECUTABLE (name [NOGUI] [RUN_UNINSTALLED] file1 ... fileN)'''&lt;br /&gt;
&lt;br /&gt;
Create a KDE application in the form of a module loadable via kdeinit.&lt;br /&gt;
&lt;br /&gt;
A library named kdeinit_&amp;lt;name&amp;gt; will be created and a small executable which links to it.&lt;br /&gt;
    &lt;br /&gt;
It supports KDE4_ENABLE_FINAL&lt;br /&gt;
    &lt;br /&gt;
If the executable has to be run from the buildtree (e.g. unit tests and code generators used later on when compiling), set the option RUN_UNINSTALLED.&lt;br /&gt;
    &lt;br /&gt;
If the executable doesn't have a GUI, use the option NOGUI. By default on OS X application bundles are created, with the NOGUI option no bundles but simple executables are created. Currently it doesn't have any effect on other platforms.&lt;br /&gt;
&lt;br /&gt;
* '''KDE4_ADD_EXECUTABLE (name [NOGUI] [RUN_UNINSTALLED] file1 ... fileN)'''&lt;br /&gt;
&lt;br /&gt;
Equivalent to ADD_EXECUTABLE(), but additionally adds some more features:&lt;br /&gt;
&lt;br /&gt;
 ** support for KDE4_ENABLE_FINAL&lt;br /&gt;
 ** support for automoc&lt;br /&gt;
 ** automatic RPATH handling&lt;br /&gt;
&lt;br /&gt;
If the executable has to be run from the buildtree (e.g. unit tests and code generators used later on when compiling), set the option RUN_UNINSTALLED.&lt;br /&gt;
&lt;br /&gt;
If the executable doesn't have a GUI, use the option NOGUI. By default on OS X application bundles are created, with the NOGUI option no bundles but simple executables are created. Currently it doesn't have any effect on other platforms.&lt;br /&gt;
&lt;br /&gt;
* '''KDE4_ADD_LIBRARY (name [STATIC | SHARED | MODULE ] file1 ... fileN)'''&lt;br /&gt;
&lt;br /&gt;
Equivalent to ADD_LIBRARY(), but additionally it supports KDE4_ENABLE_FINAL and under Windows it adds a -DMAKE_&amp;lt;name&amp;gt;_LIB definition to the compilation.&lt;br /&gt;
&lt;br /&gt;
* '''KDE4_ADD_UNIT_TEST (testname [TESTNAME targetname] file1 ... fileN)'''&lt;br /&gt;
&lt;br /&gt;
Add a unit test, which is executed when running make test&lt;br /&gt;
&lt;br /&gt;
It will be built with RPATH pointing to the build dir&lt;br /&gt;
&lt;br /&gt;
The targets are always created, but only built for the &amp;quot;all&amp;quot; target if the option KDE4_BUILD_TESTS is enabled. Otherwise the rules for the target are created but not built by default. You can build them by manually building the target.&lt;br /&gt;
&lt;br /&gt;
The name of the target can be specified using TESTNAME &amp;lt;targetname&amp;gt;, if it is not given the macro will default to the &amp;lt;testname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''KDE4_ADD_TEST_EXECUTABLE (name file1 ... fileN)'''&lt;br /&gt;
&lt;br /&gt;
Add a test executable&lt;br /&gt;
&lt;br /&gt;
It will be built with RPATH pointing to the build dir&lt;br /&gt;
&lt;br /&gt;
The targets are always created, but only built for the &amp;quot;all&amp;quot; target if the option KDE4_BUILD_TESTS is enabled. Otherwise the rules for the target are created but not built by default. You can build them by manually building the target.&lt;br /&gt;
&lt;br /&gt;
KDESRCDIR is set to the source directory of the test, this can be used with KGlobal::dirs()-&amp;gt;addResourceDir( &amp;quot;data&amp;quot;, KDESRCDIR ); to be able to use xmlgui and other things in the test, that normally require installation&lt;br /&gt;
&lt;br /&gt;
* '''KDE4_UPDATE_ICONCACHE()'''&lt;br /&gt;
&lt;br /&gt;
Notifies the icon cache that new icons have been installed by updating mtime of ${ICON_INSTALL_DIR}/hicolor directory.&lt;br /&gt;
&lt;br /&gt;
* '''KDE4_INSTALL_ICONS(path theme)'''&lt;br /&gt;
&lt;br /&gt;
Installs all png and svgz files in the current directory to the icon directory given in path, in the subdirectory for the given icon theme.&lt;br /&gt;
&lt;br /&gt;
* '''KDE4_ADD_APP_ICON(appsources pattern)'''&lt;br /&gt;
&lt;br /&gt;
Mac OS X and Windows only: Adds application icon to target source list. This macro adds an application icon to the specified target. Mac OS X notes: the application icon is added to a Mac OS X bundle so that Finder and friends show the right thing. You need to provide a 128x128 version of the icon for this to work. Windows notes: the application icon(s) are compiled into the application binary. &lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
# 'appsources'  - specifies the list of source files &lt;br /&gt;
# 'pattern'     - regular expression for searching application icons &lt;br /&gt;
&lt;br /&gt;
Examples: KDE4_ADD_APP_ICON(myapp_sources &amp;quot;pics/cr*-myapp.png&amp;quot;) or KDE4_ADD_APP_ICON(myapp_sources &amp;quot;${KDE4_INSTALL_DIR}/share/icons/oxygen/*/apps/myapp.png&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
* '''KDE4_CREATE_HANDBOOK( docbookfile )'''&lt;br /&gt;
&lt;br /&gt;
Create the handbook from the docbookfile (using meinproc)&lt;br /&gt;
&lt;br /&gt;
* '''KDE4_SET_CUSTOM_TARGET_PROPERTY''' - deprecated, do not use&lt;br /&gt;
* '''KDE4_GET_CUSTOM_TARGET_PROPERTY''' - deprecated, do not use&lt;br /&gt;
* '''KDE4_MOC_HEADERS'''&lt;br /&gt;
* '''KDE4_HANDLE_AUTOMOC'''&lt;br /&gt;
* '''KDE4_CREATE_FINAL_FILES'''&lt;br /&gt;
* '''KDE4_REMOVE_OBSOLETE_CMAKE_FILES'''&lt;br /&gt;
* '''KDE4_NO_ENABLE_FINAL'''&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/CMake/DashboardBuilds</id>
		<title>Development/CMake/DashboardBuilds</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/CMake/DashboardBuilds"/>
				<updated>2010-03-26T00:18:36Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= What is a dashboard ? =&lt;br /&gt;
&lt;br /&gt;
A dashboard can show the results of Nightly and Continuous builds of a software package. This includes warnings and errors from the configure and build process as well as the results of the executed tests belonging to the software package. This is not only displayed for one machine, but ideally for all supported operating systems such results are submitted, also with different configurations, e.g. one for a minimal system with most optional features disabled and one for a full featured system.&lt;br /&gt;
&lt;br /&gt;
For KDE [http://www.cdash.org CDash-based] dashboards are set up at http://my.cdash.org, a service provided by [http://www.kitware.com Kitware]. CDash only displays the results, the actual building and testing is done decentral on other machines.&lt;br /&gt;
When failures occur, like build errors or failed tests, notification emails can be sent by CDash.&lt;br /&gt;
So by building and testing KDE each day on the supported platforms and collecting the results in a central place, we can make sure that KDE stays compiling and also working on all supported platforms.&lt;br /&gt;
&lt;br /&gt;
You can help too to increase the quality by setting up a Nightly build and submitting the results to http://my.cdash.org.&lt;br /&gt;
&lt;br /&gt;
= For which modules/packages are there dashboards ?=&lt;br /&gt;
&lt;br /&gt;
Currently there are dashboards set up for all modules of KDE, and one for kdesupport. There are not yet dashboards for extragear and koffice.&lt;br /&gt;
If you are interested in setting dashboards up for these too, just go to http://my.cdash.org and do it, or ask on the kde-buildsystem mailing list if you have any questions.&lt;br /&gt;
&lt;br /&gt;
So, here comes the list of currently existing KDE dashboards:&lt;br /&gt;
&lt;br /&gt;
* kdesupport&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdesupport kdesupport]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=automoc4 automoc4]&lt;br /&gt;
&lt;br /&gt;
* KDE&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeaccessibility kdeaccessibility]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeadmin kdeadmin]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeartwork kdeartwork]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebase-apps kdebase/apps]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebase-runtime kdebase/runtime]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebase-workspace kdebase/workspace]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebindings kdebindings]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeedu kdeedu]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeexamples kdeexamples]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdegames kdegames]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdegraphics kdegraphics]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdelibs kdelibs]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdemultimedia kdemultimedia]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdenetwork kdenetwork]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdepim kdepim]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdepimlibs kdepimlibs]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeplasma-addons kdeplasma-addons]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdesdk kdesdk]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdetoys kdetoys]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeutils kdeutils]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdewebdev kdewebdev]&lt;br /&gt;
&lt;br /&gt;
= How to set up a Nightly build =&lt;br /&gt;
&lt;br /&gt;
Setting up a Nightly build and this way contributing to keep KDE working is not hard.&lt;br /&gt;
&lt;br /&gt;
You need:&lt;br /&gt;
* A computer. It should be running the Nightly build ''every day'', at some time after 20:00 CET (for the Nightly builds the state of the repository at 20:00 CET is used).&lt;br /&gt;
* A KDE development environment installed on this computer, i.e. &lt;br /&gt;
** CMake &amp;gt;= 2.6.2, &amp;gt;= 2.8.0 is recommended for the Nightly builds (better warning and error reporting)&lt;br /&gt;
** Compiler etc.&lt;br /&gt;
** Subversion client&lt;br /&gt;
** Qt4 and the other required libraries for building KDE4&lt;br /&gt;
* Some time to maintain the Nightly build, i.e. to upgrade the required libraries, e.g. Qt4 when necessary, to install new required libraries etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to do it under Unix ==&lt;br /&gt;
&lt;br /&gt;
This applies to Linux, FreeBSD and other Unixes. It should also apply to Mac OSX, but this hasn't been tested yet.&lt;br /&gt;
You can figure out how to set up the Nightly builds yourself, but we have also something prepared to make it really easy. Let's assume you want to contribute a Nightly build for the kdeutils modules. That's how you do it:&lt;br /&gt;
&lt;br /&gt;
* Go to http://my.cdash.org and register&lt;br /&gt;
* Once registered, subscribe to the kdeutils project&lt;br /&gt;
* Checkout KDE/kdesdk/cmake/nightly-support/ from KDE svn. There, in the KDE/ subdirectory is a ctest-script ready to use for each KDE module.&lt;br /&gt;
* Write a shell script which sets the CMAKE_PREFIX_PATH environment variable so that CMake will find everything required and then execute ctest with the KDEUtilsNightly.cmake script. This will look something like the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
  CMAKE_PREFIX_PATH=/opt/kde-qt:/opt/phonon:/what/ever/else/you/need&lt;br /&gt;
  ctest -V -S /where/you/checked/out/KDE/KDEUtilsNightly.cmake,KDE_CTEST_BUILD_SUFFIX=gcc-4.2.3&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That's it basically. The -V option for ctest makes ctest verbose, so you can see what it's doing. The KDE_CTEST_BUILD_SUFFIX will be appended to the buildname displayed at http://my.cdash.org/index.php?project=kdeutils. Setting it to the used compiler is a sensible choice.&lt;br /&gt;
&lt;br /&gt;
* Set up a cron job which runs this script every day:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
  $ crontab -e&lt;br /&gt;
  00 22 * * * /where/is/my/script/run_kdeutils_nightly.sh&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That's it. Probably you first want to run the script manually a few times until everything works, but after that you can just have it executed via cron.&lt;br /&gt;
The next day you should then see your results on http://my.cdash.org.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to contribute Nightly builds for more than one KDE module, it gets a little bit more complicated. You have to make sure that the modules are built in the right order, and that the modules are installed correctly, if other modules depend on them. For examples see kdesdk/cmake/nightly-support/example-scripts/, e.g. [http://websvn.kde.org/*checkout*/trunk/KDE/kdesdk/cmake/nightly-support/example-scripts/Nightlys-2.6.2 Nightlys-2.6.2] is the shell script I use on my machine to build (and install where necessary) all KDE modules on my Linux machine.&lt;br /&gt;
&lt;br /&gt;
== How to do it under Windows ==&lt;br /&gt;
&lt;br /&gt;
Nobody has done this yet for KDE, but it should be quite similar. If you intend to do this, please contact the kde-buildsystem mailing list, we will do our best to get it working quickly.&lt;br /&gt;
&lt;br /&gt;
= How to get help=&lt;br /&gt;
&lt;br /&gt;
If you have any questions regarding Nightly or Continuous builds for KDE or about CDash or CTest in general, please ask on the [https://mail.kde.org/mailman/listinfo/kde-buildsystem kde-buildsystem] or [https://mail.kde.org/mailman/listinfo/kde-core-devel kde-core-devel] KDE mailing lists, or also on the [http://public.kitware.com/cgi-bin/mailman/listinfo/cdash CDash mailing list].&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/CMake/DashboardBuilds</id>
		<title>Development/CMake/DashboardBuilds</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/CMake/DashboardBuilds"/>
				<updated>2010-03-26T00:14:32Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: /* How to do it under Unix */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= What is a dashboard ? =&lt;br /&gt;
&lt;br /&gt;
A dashboard can show the results of Nightly and Continuous builds of a software package. This includes warnings and errors from the configure and build process as well as the results of the executed tests belonging to the software package. This is not only displayed for one machine, but ideally for all supported operating systems such results are submitted, also with different configurations, e.g. one for a minimal system with most optional features disabled and one for a full featured system.&lt;br /&gt;
&lt;br /&gt;
For KDE [http://www.cdash.org CDash-based] dashboards are set up at http://my.cdash.org, a service provided by [http://www.kitware.com Kitware]. CDash only displays the results, the actual building and testing is done decentral on other machines.&lt;br /&gt;
When failures occur, like build errors or failed tests, notification emails can be sent by CDash.&lt;br /&gt;
So by building and testing KDE each day on the supported platforms and collecting the results in a central place, we can make sure that KDE stays compiling and also working on all supported platforms.&lt;br /&gt;
&lt;br /&gt;
You can help too to increase the quality by setting up a Nightly build and submitting the results to http://my.cdash.org.&lt;br /&gt;
&lt;br /&gt;
= For which modules/packages are there dashboards ?=&lt;br /&gt;
&lt;br /&gt;
Currently there are dashboards set up for all modules of KDE, and one for kdesupport. There are not yet dashboards for extragear and koffice.&lt;br /&gt;
If you are interested in setting dashboards up for these too, just go to http://my.cdash.org and do it, or ask on the kde-buildsystem mailing list if you have any questions.&lt;br /&gt;
&lt;br /&gt;
So, here comes the list of currently existing KDE dashboards:&lt;br /&gt;
&lt;br /&gt;
* kdesupport&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdesupport kdesupport]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=automoc4 automoc4]&lt;br /&gt;
&lt;br /&gt;
* KDE&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeaccessibility kdeaccessibility]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeadmin kdeadmin]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeartwork kdeartwork]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebase-apps kdebase/apps]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebase-runtime kdebase/runtime]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebase-workspace kdebase/workspace]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebindings kdebindings]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeedu kdeedu]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeexamples kdeexamples]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdegames kdegames]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdegraphics kdegraphics]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdelibs kdelibs]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdemultimedia kdemultimedia]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdenetwork kdenetwork]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdepim kdepim]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdepimlibs kdepimlibs]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeplasma-addons kdeplasma-addons]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdesdk kdesdk]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdetoys kdetoys]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeutils kdeutils]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdewebdev kdewebdev]&lt;br /&gt;
&lt;br /&gt;
= How to set up a Nightly build =&lt;br /&gt;
&lt;br /&gt;
Setting up a Nightly build and this way contributing to keep KDE working is not hard.&lt;br /&gt;
&lt;br /&gt;
You need:&lt;br /&gt;
* A computer. It should be running the Nightly build ''every day'', at some time after 20:00 CET (for the Nightly builds the state of the repository at 20:00 CET is used).&lt;br /&gt;
* A KDE development environment installed on this computer, i.e. &lt;br /&gt;
** CMake &amp;gt;= 2.6.2, &amp;gt;= 2.8.0 is recommended for the Nightly builds (better warning and error reporting)&lt;br /&gt;
** Compiler etc.&lt;br /&gt;
** Subversion client&lt;br /&gt;
** Qt4 and the other required libraries for building KDE4&lt;br /&gt;
* Some time to maintain the Nightly build, i.e. to upgrade the required libraries, e.g. Qt4 when necessary, to install new required libraries etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to do it under Unix ==&lt;br /&gt;
&lt;br /&gt;
This applies to Linux, FreeBSD and other Unixes. It should also apply to Mac OSX, but this hasn't been tested yet.&lt;br /&gt;
You can figure out how to set up the Nightly builds yourself, but we have also something prepared to make it really easy. Let's assume you want to contribute a Nightly build for the kdeutils modules. That's how you do it:&lt;br /&gt;
&lt;br /&gt;
* Go to http://my.cdash.org and register&lt;br /&gt;
* Once registered, subscribe to the kdeutils project&lt;br /&gt;
* Checkout KDE/kdesdk/cmake/nightly-support/ from KDE svn. There, in the KDE/ subdirectory is a ctest-script ready to use for each KDE module.&lt;br /&gt;
* Write a shell script which sets the CMAKE_PREFIX_PATH environment variable so that CMake will find everything required and then execute ctest with the KDEUtilsNightly.cmake script. This will look something like the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
  CMAKE_PREFIX_PATH=/opt/kde-qt:/opt/phonon:/what/ever/else/you/need&lt;br /&gt;
  ctest -V -S /where/you/checked/out/KDE/KDEUtilsNightly.cmake,KDE_CTEST_BUILD_SUFFIX=gcc-4.2.3&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That's it basically. The -V option for ctest makes ctest verbose, so you can see what it's doing. The KDE_CTEST_BUILD_SUFFIX will be appended to the buildname displayed at http://my.cdash.org/index.php?project=kdeutils. Setting it to the used compiler is a sensible choice.&lt;br /&gt;
&lt;br /&gt;
* Set up a cron job which runs this script every day:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
  $ crontab -e&lt;br /&gt;
  00 22 * * * /where/is/my/script/run_kdeutils_nightly.sh&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That's it. Probably you first want to run the script manually a few times until everything works, but after that you can just have it executed via cron.&lt;br /&gt;
The next day you should then see your results on http://my.cdash.org.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to contribute Nightly builds for more than one KDE module, it gets a little bit more complicated. You have to make sure that the modules are built in the right order, and that the modules are installed correctly, if other modules depend on them. For examples see kdesdk/cmake/nightly-support/example-scripts/, e.g. [http://websvn.kde.org/*checkout*/trunk/KDE/kdesdk/cmake/nightly-support/example-scripts/Nightlys-2.6.2 Nightlys-2.6.2] is the shell script I use on my machine to build (and install where necessary) all KDE modules on my Linux machine.&lt;br /&gt;
&lt;br /&gt;
== How to do it under Windows ==&lt;br /&gt;
&lt;br /&gt;
Nobody has done this yet for KDE, but it should be quite similar. If you intend to do this, please contact the kde-buildsystem mailing list, we will do our best to get it working quickly.&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/CMake/DashboardBuilds</id>
		<title>Development/CMake/DashboardBuilds</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/CMake/DashboardBuilds"/>
				<updated>2010-03-26T00:11:59Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: /* How to set up a Nightly build */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= What is a dashboard ? =&lt;br /&gt;
&lt;br /&gt;
A dashboard can show the results of Nightly and Continuous builds of a software package. This includes warnings and errors from the configure and build process as well as the results of the executed tests belonging to the software package. This is not only displayed for one machine, but ideally for all supported operating systems such results are submitted, also with different configurations, e.g. one for a minimal system with most optional features disabled and one for a full featured system.&lt;br /&gt;
&lt;br /&gt;
For KDE [http://www.cdash.org CDash-based] dashboards are set up at http://my.cdash.org, a service provided by [http://www.kitware.com Kitware]. CDash only displays the results, the actual building and testing is done decentral on other machines.&lt;br /&gt;
When failures occur, like build errors or failed tests, notification emails can be sent by CDash.&lt;br /&gt;
So by building and testing KDE each day on the supported platforms and collecting the results in a central place, we can make sure that KDE stays compiling and also working on all supported platforms.&lt;br /&gt;
&lt;br /&gt;
You can help too to increase the quality by setting up a Nightly build and submitting the results to http://my.cdash.org.&lt;br /&gt;
&lt;br /&gt;
= For which modules/packages are there dashboards ?=&lt;br /&gt;
&lt;br /&gt;
Currently there are dashboards set up for all modules of KDE, and one for kdesupport. There are not yet dashboards for extragear and koffice.&lt;br /&gt;
If you are interested in setting dashboards up for these too, just go to http://my.cdash.org and do it, or ask on the kde-buildsystem mailing list if you have any questions.&lt;br /&gt;
&lt;br /&gt;
So, here comes the list of currently existing KDE dashboards:&lt;br /&gt;
&lt;br /&gt;
* kdesupport&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdesupport kdesupport]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=automoc4 automoc4]&lt;br /&gt;
&lt;br /&gt;
* KDE&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeaccessibility kdeaccessibility]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeadmin kdeadmin]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeartwork kdeartwork]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebase-apps kdebase/apps]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebase-runtime kdebase/runtime]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebase-workspace kdebase/workspace]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebindings kdebindings]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeedu kdeedu]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeexamples kdeexamples]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdegames kdegames]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdegraphics kdegraphics]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdelibs kdelibs]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdemultimedia kdemultimedia]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdenetwork kdenetwork]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdepim kdepim]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdepimlibs kdepimlibs]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeplasma-addons kdeplasma-addons]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdesdk kdesdk]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdetoys kdetoys]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeutils kdeutils]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdewebdev kdewebdev]&lt;br /&gt;
&lt;br /&gt;
= How to set up a Nightly build =&lt;br /&gt;
&lt;br /&gt;
Setting up a Nightly build and this way contributing to keep KDE working is not hard.&lt;br /&gt;
&lt;br /&gt;
You need:&lt;br /&gt;
* A computer. It should be running the Nightly build ''every day'', at some time after 20:00 CET (for the Nightly builds the state of the repository at 20:00 CET is used).&lt;br /&gt;
* A KDE development environment installed on this computer, i.e. &lt;br /&gt;
** CMake &amp;gt;= 2.6.2, &amp;gt;= 2.8.0 is recommended for the Nightly builds (better warning and error reporting)&lt;br /&gt;
** Compiler etc.&lt;br /&gt;
** Subversion client&lt;br /&gt;
** Qt4 and the other required libraries for building KDE4&lt;br /&gt;
* Some time to maintain the Nightly build, i.e. to upgrade the required libraries, e.g. Qt4 when necessary, to install new required libraries etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to do it under Unix ==&lt;br /&gt;
&lt;br /&gt;
This applies to Linux, FreeBSD and other Unixes. It should also apply to Mac OSX, but this hasn't been tested yet.&lt;br /&gt;
You can figure out how to set up the Nightly builds yourself, but we have also something prepared to make it really easy. Let's assume you want to contribute a Nightly build for the kdeutils modules. That's how you do it:&lt;br /&gt;
&lt;br /&gt;
* Go to http://my.cdash.org and register&lt;br /&gt;
* Once registered, subscribe to the kdeutils project&lt;br /&gt;
* Checkout KDE/kdesdk/cmake/nightly-support/ from KDE svn. There, in the KDE/ subdirectory is a ctest-script ready to use for each KDE module.&lt;br /&gt;
* Write a shell script which sets the CMAKE_PREFIX_PATH environment variable so that CMake will find everything required and then execute ctest with the KDEUtilsNightly.cmake script. This will look something like the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
  CMAKE_PREFIX_PATH=/opt/kde-qt:/opt/phonon:/what/ever/else/you/need&lt;br /&gt;
  ctest -V -S /where/you/checked/out/KDE/KDEUtilsNightly.cmake,KDE_CTEST_BUILD_SUFFIX=gcc-4.2.3&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That's it basically. The -V option for ctest makes ctest verbose, so you can see what it's doing. The KDE_CTEST_BUILD_SUFFIX will be appended to the buildname displayed at http://my.cdash.org/index.php?project=kdeutils. Setting it to the used compiler is a sensible choice.&lt;br /&gt;
&lt;br /&gt;
* Set up a cron job which runs this script every day:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
  $ crontab -e&lt;br /&gt;
  00 22 * * * /where/is/my/script/run_kdeutils_nightly.sh&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That's it. Probably you first want to run the script manually a few times until everything works, but after that you can just have it executed via cron.&lt;br /&gt;
The next day you should then see your results on http://my.cdash.org.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to contribute Nightly builds for more than one KDE module, it gets a little bit more complicated. You have to make sure that the modules are built in the right order, and that the modules are installed correctly, if other modules depend on them. For examples see kdesdk/cmake/nightly-support/example-scripts/.&lt;br /&gt;
&lt;br /&gt;
== How to do it under Windows ==&lt;br /&gt;
&lt;br /&gt;
Nobody has done this yet for KDE, but it should be quite similar. If you intend to do this, please contact the kde-buildsystem mailing list, we will do our best to get it working quickly.&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/CMake/DashboardBuilds</id>
		<title>Development/CMake/DashboardBuilds</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/CMake/DashboardBuilds"/>
				<updated>2010-03-26T00:01:00Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: /* How to set up a Nightly build */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= What is a dashboard ? =&lt;br /&gt;
&lt;br /&gt;
A dashboard can show the results of Nightly and Continuous builds of a software package. This includes warnings and errors from the configure and build process as well as the results of the executed tests belonging to the software package. This is not only displayed for one machine, but ideally for all supported operating systems such results are submitted, also with different configurations, e.g. one for a minimal system with most optional features disabled and one for a full featured system.&lt;br /&gt;
&lt;br /&gt;
For KDE [http://www.cdash.org CDash-based] dashboards are set up at http://my.cdash.org, a service provided by [http://www.kitware.com Kitware]. CDash only displays the results, the actual building and testing is done decentral on other machines.&lt;br /&gt;
When failures occur, like build errors or failed tests, notification emails can be sent by CDash.&lt;br /&gt;
So by building and testing KDE each day on the supported platforms and collecting the results in a central place, we can make sure that KDE stays compiling and also working on all supported platforms.&lt;br /&gt;
&lt;br /&gt;
You can help too to increase the quality by setting up a Nightly build and submitting the results to http://my.cdash.org.&lt;br /&gt;
&lt;br /&gt;
= For which modules/packages are there dashboards ?=&lt;br /&gt;
&lt;br /&gt;
Currently there are dashboards set up for all modules of KDE, and one for kdesupport. There are not yet dashboards for extragear and koffice.&lt;br /&gt;
If you are interested in setting dashboards up for these too, just go to http://my.cdash.org and do it, or ask on the kde-buildsystem mailing list if you have any questions.&lt;br /&gt;
&lt;br /&gt;
So, here comes the list of currently existing KDE dashboards:&lt;br /&gt;
&lt;br /&gt;
* kdesupport&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdesupport kdesupport]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=automoc4 automoc4]&lt;br /&gt;
&lt;br /&gt;
* KDE&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeaccessibility kdeaccessibility]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeadmin kdeadmin]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeartwork kdeartwork]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebase-apps kdebase/apps]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebase-runtime kdebase/runtime]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebase-workspace kdebase/workspace]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebindings kdebindings]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeedu kdeedu]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeexamples kdeexamples]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdegames kdegames]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdegraphics kdegraphics]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdelibs kdelibs]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdemultimedia kdemultimedia]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdenetwork kdenetwork]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdepim kdepim]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdepimlibs kdepimlibs]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeplasma-addons kdeplasma-addons]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdesdk kdesdk]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdetoys kdetoys]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeutils kdeutils]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdewebdev kdewebdev]&lt;br /&gt;
&lt;br /&gt;
= How to set up a Nightly build =&lt;br /&gt;
&lt;br /&gt;
Setting up a Nightly build and this way contributing to keep KDE working is not hard.&lt;br /&gt;
&lt;br /&gt;
You need:&lt;br /&gt;
* A computer. It should be running the Nightly build ''every day'', at some time after 20:00 CET (for the Nightly builds the state of the repository at 20:00 CET is used).&lt;br /&gt;
* A KDE development environment installed on this computer, i.e. &lt;br /&gt;
** CMake &amp;gt;= 2.6.2, &amp;gt;= 2.8.0 is recommended for the Nightly builds (better warning and error reporting)&lt;br /&gt;
** Compiler etc.&lt;br /&gt;
** Subversion client&lt;br /&gt;
** Qt4 and the other required libraries for building KDE4&lt;br /&gt;
* Some time to maintain the Nightly build, i.e. to upgrade the required libraries, e.g. Qt4 when necessary, to install new required libraries etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
How to do it:&lt;br /&gt;
&lt;br /&gt;
You can set up the Nightly builds yourself, but we have also something prepared to make it really easy. Let's assume you want to contribute a Nightly build for the kdeutils modules. That's how you do it:&lt;br /&gt;
&lt;br /&gt;
* Checkout KDE/kdesdk/cmake/nightly-support/ from KDE svn. There, in the KDE/ subdirectory is a ctest-script ready to use for each KDE module.&lt;br /&gt;
* Write a shell script which sets the CMAKE_PREFIX_PATH environment variable so that CMake will find everything required and then execute ctest with the KDEUtilsNightly.cmake script. This will look something like the following:&lt;br /&gt;
&lt;br /&gt;
  CMAKE_PREFIX_PATH=/opt/kde-qt:/opt/phonon:/what/ever/else/you/need&lt;br /&gt;
&lt;br /&gt;
  ctest -V -S /where/you/checked/out/KDE/KDEUtilsNightly.cmake,KDE_CTEST_BUILD_SUFFIX=gcc-4.2.3&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/CMake/DashboardBuilds</id>
		<title>Development/CMake/DashboardBuilds</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/CMake/DashboardBuilds"/>
				<updated>2010-03-25T23:53:02Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: /* How to set up a Nightly build */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= What is a dashboard ? =&lt;br /&gt;
&lt;br /&gt;
A dashboard can show the results of Nightly and Continuous builds of a software package. This includes warnings and errors from the configure and build process as well as the results of the executed tests belonging to the software package. This is not only displayed for one machine, but ideally for all supported operating systems such results are submitted, also with different configurations, e.g. one for a minimal system with most optional features disabled and one for a full featured system.&lt;br /&gt;
&lt;br /&gt;
For KDE [http://www.cdash.org CDash-based] dashboards are set up at http://my.cdash.org, a service provided by [http://www.kitware.com Kitware]. CDash only displays the results, the actual building and testing is done decentral on other machines.&lt;br /&gt;
When failures occur, like build errors or failed tests, notification emails can be sent by CDash.&lt;br /&gt;
So by building and testing KDE each day on the supported platforms and collecting the results in a central place, we can make sure that KDE stays compiling and also working on all supported platforms.&lt;br /&gt;
&lt;br /&gt;
You can help too to increase the quality by setting up a Nightly build and submitting the results to http://my.cdash.org.&lt;br /&gt;
&lt;br /&gt;
= For which modules/packages are there dashboards ?=&lt;br /&gt;
&lt;br /&gt;
Currently there are dashboards set up for all modules of KDE, and one for kdesupport. There are not yet dashboards for extragear and koffice.&lt;br /&gt;
If you are interested in setting dashboards up for these too, just go to http://my.cdash.org and do it, or ask on the kde-buildsystem mailing list if you have any questions.&lt;br /&gt;
&lt;br /&gt;
So, here comes the list of currently existing KDE dashboards:&lt;br /&gt;
&lt;br /&gt;
* kdesupport&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdesupport kdesupport]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=automoc4 automoc4]&lt;br /&gt;
&lt;br /&gt;
* KDE&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeaccessibility kdeaccessibility]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeadmin kdeadmin]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeartwork kdeartwork]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebase-apps kdebase/apps]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebase-runtime kdebase/runtime]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebase-workspace kdebase/workspace]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebindings kdebindings]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeedu kdeedu]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeexamples kdeexamples]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdegames kdegames]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdegraphics kdegraphics]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdelibs kdelibs]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdemultimedia kdemultimedia]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdenetwork kdenetwork]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdepim kdepim]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdepimlibs kdepimlibs]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeplasma-addons kdeplasma-addons]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdesdk kdesdk]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdetoys kdetoys]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeutils kdeutils]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdewebdev kdewebdev]&lt;br /&gt;
&lt;br /&gt;
= How to set up a Nightly build =&lt;br /&gt;
&lt;br /&gt;
Setting up a Nightly build and this way contributing to keep KDE working is not hard.&lt;br /&gt;
&lt;br /&gt;
You need:&lt;br /&gt;
* A computer. It should be running the Nightly build ''every day'', at some time after 20:00 CET (for the Nightly builds the state of the repository at 20:00 CET is used).&lt;br /&gt;
* A KDE development environment installed on this computer, i.e. &lt;br /&gt;
** CMake &amp;gt;= 2.6.2, &amp;gt;= 2.8.0 is recommended for the Nightly builds (better warning and error reporting)&lt;br /&gt;
** Compiler etc.&lt;br /&gt;
** Qt4 and the other required libraries for building KDE4&lt;br /&gt;
* Some time to maintain the Nightly build, i.e. to upgrade the required libraries, e.g. Qt4 when necessary, to install new required libraries etc.&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/CMake/DashboardBuilds</id>
		<title>Development/CMake/DashboardBuilds</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/CMake/DashboardBuilds"/>
				<updated>2010-03-25T23:47:38Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= What is a dashboard ? =&lt;br /&gt;
&lt;br /&gt;
A dashboard can show the results of Nightly and Continuous builds of a software package. This includes warnings and errors from the configure and build process as well as the results of the executed tests belonging to the software package. This is not only displayed for one machine, but ideally for all supported operating systems such results are submitted, also with different configurations, e.g. one for a minimal system with most optional features disabled and one for a full featured system.&lt;br /&gt;
&lt;br /&gt;
For KDE [http://www.cdash.org CDash-based] dashboards are set up at http://my.cdash.org, a service provided by [http://www.kitware.com Kitware]. CDash only displays the results, the actual building and testing is done decentral on other machines.&lt;br /&gt;
When failures occur, like build errors or failed tests, notification emails can be sent by CDash.&lt;br /&gt;
So by building and testing KDE each day on the supported platforms and collecting the results in a central place, we can make sure that KDE stays compiling and also working on all supported platforms.&lt;br /&gt;
&lt;br /&gt;
You can help too to increase the quality by setting up a Nightly build and submitting the results to http://my.cdash.org.&lt;br /&gt;
&lt;br /&gt;
= For which modules/packages are there dashboards ?=&lt;br /&gt;
&lt;br /&gt;
Currently there are dashboards set up for all modules of KDE, and one for kdesupport. There are not yet dashboards for extragear and koffice.&lt;br /&gt;
If you are interested in setting dashboards up for these too, just go to http://my.cdash.org and do it, or ask on the kde-buildsystem mailing list if you have any questions.&lt;br /&gt;
&lt;br /&gt;
So, here comes the list of currently existing KDE dashboards:&lt;br /&gt;
&lt;br /&gt;
* kdesupport&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdesupport kdesupport]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=automoc4 automoc4]&lt;br /&gt;
&lt;br /&gt;
* KDE&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeaccessibility kdeaccessibility]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeadmin kdeadmin]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeartwork kdeartwork]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebase-apps kdebase/apps]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebase-runtime kdebase/runtime]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebase-workspace kdebase/workspace]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebindings kdebindings]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeedu kdeedu]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeexamples kdeexamples]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdegames kdegames]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdegraphics kdegraphics]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdelibs kdelibs]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdemultimedia kdemultimedia]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdenetwork kdenetwork]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdepim kdepim]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdepimlibs kdepimlibs]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeplasma-addons kdeplasma-addons]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdesdk kdesdk]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdetoys kdetoys]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeutils kdeutils]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdewebdev kdewebdev]&lt;br /&gt;
&lt;br /&gt;
= How to set up a Nightly build =&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/CMake/DashboardBuilds</id>
		<title>Development/CMake/DashboardBuilds</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/CMake/DashboardBuilds"/>
				<updated>2010-03-25T23:45:35Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: /* For which modules/packages are there dashboards ? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= What is a dashboard ? =&lt;br /&gt;
&lt;br /&gt;
A dashboard can show the results of Nightly and Continuous builds of a software package. This includes warnings and errors from the configure and build process as well as the results of the executed tests belonging to the software package. This is not only displayed for one machine, but ideally for all supported operating systems such results are submitted, also with different configurations, e.g. one for a minimal system with most optional features disabled and one for a full featured system.&lt;br /&gt;
&lt;br /&gt;
For KDE [http://www.cdash.org CDash-based] dashboards are set up at http://my.cdash.org, a service provided by [http://www.kitware.com Kitware]. CDash only displays the results, the actual building and testing is done decentral on other machines.&lt;br /&gt;
When failures occur, like build errors or failed tests, notification emails can be sent by CDash.&lt;br /&gt;
&lt;br /&gt;
You can help too to increase the quality by setting up a Nightly build and submitting the results to http://my.cdash.org.&lt;br /&gt;
&lt;br /&gt;
= For which modules/packages are there dashboards ?=&lt;br /&gt;
&lt;br /&gt;
Currently there are dashboards set up for all modules of KDE, and one for kdesupport. There are not yet dashboards for extragear and koffice.&lt;br /&gt;
If you are interested in setting dashboards up for these too, just go to http://my.cdash.org and do it, or ask on the kde-buildsystem mailing list if you have any questions.&lt;br /&gt;
&lt;br /&gt;
So, here comes the list of currently existing KDE dashboards:&lt;br /&gt;
&lt;br /&gt;
* kdesupport&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdesupport kdesupport]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=automoc4 automoc4]&lt;br /&gt;
&lt;br /&gt;
* KDE&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeaccessibility kdeaccessibility]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeadmin kdeadmin]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeartwork kdeartwork]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebase-apps kdebase/apps]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebase-runtime kdebase/runtime]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebase-workspace kdebase/workspace]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdebindings kdebindings]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeedu kdeedu]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeexamples kdeexamples]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdegames kdegames]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdegraphics kdegraphics]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdelibs kdelibs]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdemultimedia kdemultimedia]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdenetwork kdenetwork]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdepim kdepim]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdepimlibs kdepimlibs]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeplasma-addons kdeplasma-addons]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdesdk kdesdk]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdetoys kdetoys]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdeutils kdeutils]&lt;br /&gt;
** [http://my.cdash.org/index.php?project=kdewebdev kdewebdev]&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/CMake/DashboardBuilds</id>
		<title>Development/CMake/DashboardBuilds</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/CMake/DashboardBuilds"/>
				<updated>2010-03-25T23:39:31Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: /* For which modules/packages are there dashboards ? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= What is a dashboard ? =&lt;br /&gt;
&lt;br /&gt;
A dashboard can show the results of Nightly and Continuous builds of a software package. This includes warnings and errors from the configure and build process as well as the results of the executed tests belonging to the software package. This is not only displayed for one machine, but ideally for all supported operating systems such results are submitted, also with different configurations, e.g. one for a minimal system with most optional features disabled and one for a full featured system.&lt;br /&gt;
&lt;br /&gt;
For KDE [http://www.cdash.org CDash-based] dashboards are set up at http://my.cdash.org, a service provided by [http://www.kitware.com Kitware]. CDash only displays the results, the actual building and testing is done decentral on other machines.&lt;br /&gt;
When failures occur, like build errors or failed tests, notification emails can be sent by CDash.&lt;br /&gt;
&lt;br /&gt;
You can help too to increase the quality by setting up a Nightly build and submitting the results to http://my.cdash.org.&lt;br /&gt;
&lt;br /&gt;
= For which modules/packages are there dashboards ?=&lt;br /&gt;
&lt;br /&gt;
Currently there are dashboards set up for all modules of KDE, and one for kdesupport. There are not yet dashboards for extragear and koffice.&lt;br /&gt;
If you are interested in setting dashboards up for these too, just go to http://my.cdash.org and do it, or ask on the kde-buildsystem mailing list if you have any questions.&lt;br /&gt;
&lt;br /&gt;
So, here comes the list of currently existing KDE dashboards:&lt;br /&gt;
&lt;br /&gt;
* [http://my.cdash.org/index.php?project=kdesupport kdesupport]&lt;br /&gt;
 *[http://my.cdash.org/index.php?project=kdeaccessibility kdeaccessibility]&lt;br /&gt;
 *&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/CMake/DashboardBuilds</id>
		<title>Development/CMake/DashboardBuilds</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/CMake/DashboardBuilds"/>
				<updated>2010-03-25T23:39:14Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= What is a dashboard ? =&lt;br /&gt;
&lt;br /&gt;
A dashboard can show the results of Nightly and Continuous builds of a software package. This includes warnings and errors from the configure and build process as well as the results of the executed tests belonging to the software package. This is not only displayed for one machine, but ideally for all supported operating systems such results are submitted, also with different configurations, e.g. one for a minimal system with most optional features disabled and one for a full featured system.&lt;br /&gt;
&lt;br /&gt;
For KDE [http://www.cdash.org CDash-based] dashboards are set up at http://my.cdash.org, a service provided by [http://www.kitware.com Kitware]. CDash only displays the results, the actual building and testing is done decentral on other machines.&lt;br /&gt;
When failures occur, like build errors or failed tests, notification emails can be sent by CDash.&lt;br /&gt;
&lt;br /&gt;
You can help too to increase the quality by setting up a Nightly build and submitting the results to http://my.cdash.org.&lt;br /&gt;
&lt;br /&gt;
= For which modules/packages are there dashboards ?=&lt;br /&gt;
&lt;br /&gt;
Currently there are dashboards set up for all modules of KDE, and one for kdesupport. There are not yet dashboards for extragear and koffice.&lt;br /&gt;
If you are interested in setting dashboards up for these too, just go to http://my.cdash.org and do it, or ask on the kde-buildsystem mailing list if you have any questions.&lt;br /&gt;
&lt;br /&gt;
So, here comes the list of currently existing KDE dashboards:&lt;br /&gt;
&lt;br /&gt;
 * [ http://my.cdash.org/index.php?project=kdesupport kdesupport]&lt;br /&gt;
 * [ http://my.cdash.org/index.php?project=kdeaccessibility kdeaccessibility]&lt;br /&gt;
 *&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/CMake/DashboardBuilds</id>
		<title>Development/CMake/DashboardBuilds</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/CMake/DashboardBuilds"/>
				<updated>2010-03-25T23:36:25Z</updated>
		
		<summary type="html">&lt;p&gt;Neundorf: /* What is a dashboard ? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= What is a dashboard ? =&lt;br /&gt;
&lt;br /&gt;
A dashboard can show the results of Nightly and Continuous builds of a software package. This includes warnings and errors from the configure and build process as well as the results of the executed tests belonging to the software package. This is not only displayed for one machine, but ideally for all supported operating systems such results are submitted, also with different configurations, e.g. one for a minimal system with most optional features disabled and one for a full featured system.&lt;br /&gt;
&lt;br /&gt;
For KDE [http://www.cdash.org CDash-based] dashboards are set up at [http://my.cdash.org], a service provided by [http://www.kitware.com Kitware]. CDash only displays the results, the actual building and testing is done decentral on other machines.&lt;br /&gt;
When failures occur, like build errors or failed tests, notification emails can be sent by CDash.&lt;br /&gt;
&lt;br /&gt;
You can help too to increase the quality by setting up a Nightly build and submitting the results to [http://my.cdash.org].&lt;br /&gt;
&lt;br /&gt;
= For which modules/packages are there dashboards ?=&lt;br /&gt;
&lt;br /&gt;
Currently there are dashboards set up for all modules of KDE, and one for kdesupport. There are not yet dashboards for extragear and koffice.&lt;br /&gt;
If you are interested in setting dashboards up for these too, just go to [http://my.cdash.org] and do it, or ask on the kde-buildsystem mailing list if you have any questions.&lt;/div&gt;</summary>
		<author><name>Neundorf</name></author>	</entry>

	</feed>