Compiler une application Qt avec les autotools (autoconf) sous Linux
Un billet de blog de matser

Le , par matser, Membre régulier
Bonjour à tous

Je vais vous montrer comment utiliser les autotools avec Qt.

Je suppose que vous avez quelques bases avec automake et autoconf.

si vous êtes sous debian, installez qt et autres comme ceci:
Code : Sélectionner tout
1
2
$ su 
# apt-get install qt5-default build-essential g++ pkg-config moc
le fichier configue.ac est le suivant (à modifier en fonction du projet):
Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#                                               -*- Autoconf -*- 
# Process this file with autoconf to produce a configure script. 
 
AC_PREREQ([2.69]) 
AC_INIT([hello], [1.0], [votre@e.mail]) 
AM_INIT_AUTOMAKE 
AC_CONFIG_SRCDIR([src/hello.cpp]) 
AC_CONFIG_HEADERS([config.h]) 
 
# Checks for programs. 
AC_PROG_CXX 
 
# Checks for libraries. 
 
# Checks for header files. 
 
# Checks for typedefs, structures, and compiler characteristics. 
 
# Checks for library functions. 
 
PKG_PROG_PKG_CONFIG 
 
# ... 
 
CPPFLAGS="`$PKG_CONFIG --cflags-only-I QtCore QtGui` $CPPFLAGS" 
LDFLAGS="`$PKG_CONFIG --libs-only-L QtCore QtGui` $LDFLAGS" 
LIBS="`$PKG_CONFIG --libs-only-l QtCore QtGui` $LIBS" 
 
 
AC_CONFIG_FILES([Makefile src/Makefile]) 
AC_OUTPUT
Le fichier Makefile.am à la racine du projet, à modifier selon votre projet:
Code : Sélectionner tout
SUBDIRS = src
Le fichier src/Makefile.am, à modifier selon votre projet:
Code : Sélectionner tout
1
2
3
bin_PROGRAMS = hello 
hello_CXXFLAGS=-I /usr/include/i386-linux-gnu/qt5/QtWidget 
hello_SOURCES = main.cpp
vous pouvez maintenant utiliser les autotools:
Code : Sélectionner tout
1
2
$ touch AUTHORS ChangeLog NEWS README 
$ aclocal && autoheader && automake -c -a && autoconf
il serait bien de remplir les fichier AUTHORS, ChangeLog, NEWS et README

pour vérifier si ça fonctionne:
Code : Sélectionner tout
1
2
3
$ ./configure --prefix=/usr 
$ make 
$ make DESTDIR=/un/chemin install
ceci installera les fichiers cibles dans /un/chemin. On peut le vérifier avec find
Code : Sélectionner tout
$ find /un/chemin
pour remettre le projet dans l'état initial:
Code : Sélectionner tout
1
2
$ cd projet-1.0 
$ make distclean
pour créer le tarball en .tar.bz2:
Code : Sélectionner tout
$ make dist-bz2
pour créer le tarball en .tar.gz:
Code : Sélectionner tout
1
2
$ ./configure 
$ make dist


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster un commentaire

Avatar de matser matser - Membre régulier https://www.developpez.com
le 01/02/2016 à 23:49
bonjour,

pour coriger la fin:
pour faire un tarball en bz2, on utilisera plutôt make dist-bzip2
Code : Sélectionner tout
1
2
$ cd projet-1.0 
$ make dist-bzip2
ce qui est meilleur car on obtient un tarball sans les fichiers inutiles
Avatar de matser matser - Membre régulier https://www.developpez.com
le 02/06/2016 à 17:04
au préalable, sous Debian:
Code : Sélectionner tout
1
2
$su 
# apt-get install autoconf pkg-config qt-sdk
Avatar de matser matser - Membre régulier https://www.developpez.com
le 29/08/2016 à 6:53
On peut utiliser qt5 sous debian jessie:
Code : Sélectionner tout
1
2
$ su 
# apt-get install qt5-default build-essential g++ pkg-config
le fichier src/Makefile sera alors:
Code : Sélectionner tout
1
2
3
4
5
bin_PROGRAMS = hello 
 
hello_CXXFLAGS=-I /usr/include/i386-linux-gnu/qt5 
 
hello_SOURCES = main.cpp
Avatar de matser matser - Membre régulier https://www.developpez.com
le 15/09/2016 à 12:32
je voulais dire le fichier Makefile.am
Avatar de matser matser - Membre régulier https://www.developpez.com
le 31/10/2016 à 15:15
avec ubuntu il faut installer automake et non pas automake1.11, sinon aclocal ne fonctionnera pas
Code : Sélectionner tout
sudo apt-get install automake
Offres d'emploi IT
Chef projet big data - pse flotte H/F
Safran - Ile de France - Évry (91090)
IT lead développeur H/F
Capgemini - Bretagne - Rennes (35000)
Spécialiste systèmes informatiques qualité et référent procédure H/F
Safran - Ile de France - Colombes (92700)

Voir plus d'offres Voir la carte des offres IT
Responsable bénévole de la rubrique Qt : Thibaut Cuvelier -