71 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
		
		
			
		
	
	
			71 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
| 
								 | 
							
								<section xmlns="http://docbook.org/ns/docbook"
							 | 
						||
| 
								 | 
							
								         xmlns:xlink="http://www.w3.org/1999/xlink"
							 | 
						||
| 
								 | 
							
								         xml:id="sec-language-qt">
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<title>Qt</title>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<para>The information in this section applies to Qt 5.5 and later.</para>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<para>Qt is an application development toolkit for C++. Although it is
							 | 
						||
| 
								 | 
							
								not a distinct programming language, there are special considerations
							 | 
						||
| 
								 | 
							
								for packaging Qt-based programs and libraries. A small set of tools
							 | 
						||
| 
								 | 
							
								and conventions has grown out of these considerations.</para>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<section xml:id="ssec-qt-libraries"><title>Libraries</title>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<para>Packages that provide libraries should be listed in
							 | 
						||
| 
								 | 
							
								<varname>qt5LibsFun</varname> so that the library is built with each
							 | 
						||
| 
								 | 
							
								Qt version. A set of packages is provided for each version of Qt; for
							 | 
						||
| 
								 | 
							
								example, <varname>qt5Libs</varname> always provides libraries built
							 | 
						||
| 
								 | 
							
								with the latest version, <varname>qt55Libs</varname> provides
							 | 
						||
| 
								 | 
							
								libraries built with Qt 5.5, and so on. To avoid version conflicts, no
							 | 
						||
| 
								 | 
							
								top-level attributes are created for these packages.</para>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								</section>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<section xml:id="ssec-qt-programs"><title>Programs</title>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<para>Application packages do not need to be built with every Qt
							 | 
						||
| 
								 | 
							
								version. To ensure consistency between the package's dependencies,
							 | 
						||
| 
								 | 
							
								call the package with <literal>qt5Libs.callPackage</literal> instead
							 | 
						||
| 
								 | 
							
								of the usual <literal>callPackage</literal>. An older version may be
							 | 
						||
| 
								 | 
							
								selected in case of incompatibility. For example, to build with Qt
							 | 
						||
| 
								 | 
							
								5.5, call the package with
							 | 
						||
| 
								 | 
							
								<literal>qt55Libs.callPackage</literal>.</para>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<para>Several environment variables must be set at runtime for Qt
							 | 
						||
| 
								 | 
							
								applications to function correctly, including:</para>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<itemizedlist>
							 | 
						||
| 
								 | 
							
								  <listitem><para><envar>QT_PLUGIN_PATH</envar></para></listitem>
							 | 
						||
| 
								 | 
							
								  <listitem><para><envar>QML_IMPORT_PATH</envar></para></listitem>
							 | 
						||
| 
								 | 
							
								  <listitem><para><envar>QML2_IMPORT_PATH</envar></para></listitem>
							 | 
						||
| 
								 | 
							
								  <listitem><para><envar>XDG_DATA_DIRS</envar></para></listitem>
							 | 
						||
| 
								 | 
							
								</itemizedlist>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<para>To ensure that these are set correctly, the program must be wrapped by
							 | 
						||
| 
								 | 
							
								invoking <literal>wrapQtProgram <replaceable>program</replaceable></literal>
							 | 
						||
| 
								 | 
							
								during installation (for example, during
							 | 
						||
| 
								 | 
							
								<literal>fixupPhase</literal>). <literal>wrapQtProgram</literal>
							 | 
						||
| 
								 | 
							
								accepts the same options as <literal>makeWrapper</literal>.
							 | 
						||
| 
								 | 
							
								</para>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								</section>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<section xml:id="ssec-qt-kde"><title>KDE</title>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<para>Many of the considerations above also apply to KDE packages,
							 | 
						||
| 
								 | 
							
								especially the need to set the correct environment variables at
							 | 
						||
| 
								 | 
							
								runtime. To ensure that this is done, invoke <literal>wrapKDEProgram
							 | 
						||
| 
								 | 
							
								<replaceable>program</replaceable></literal> during
							 | 
						||
| 
								 | 
							
								installation. <literal>wrapKDEProgram</literal> also generates a
							 | 
						||
| 
								 | 
							
								<literal>ksycoca</literal> database so that required data and services
							 | 
						||
| 
								 | 
							
								can be found. Like its Qt counterpart,
							 | 
						||
| 
								 | 
							
								<literal>wrapKDEProgram</literal> accepts the same options as
							 | 
						||
| 
								 | 
							
								<literal>makeWrapper</literal>.</para>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								</section>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								</section>
							 | 
						||
| 
								 | 
							
								
							 |