Voir le flux RSS

matser

[Actualité] Qt et les autotools (autoconf)

Noter ce billet
par , 19/12/2015 à 15h26 (1076 Affichages)
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 ubuntu, installez qt et autres comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$ sudo apt install qt-default automake autoconf build-essential g++ pkg-config moc
le fichier configue.ac est le suivant (à modifier en fonction du projet):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
32
33
34
35
36
37
38
39
40
41
42
#                                               -*- Autoconf -*- 
# Process this file with autoconf to produce a configure script. 
 
AC_PREREQ([2.69]) 
AC_INIT([bouton], [1.0], [votre@e.mail]) 
AM_INIT_AUTOMAKE 
AC_CONFIG_SRCDIR([src/main.cpp]) 
AC_CONFIG_HEADERS([config.h]) 
 
# Checks for programs. 
AC_PROG_CXX 
 
#AM_CXXFLAGS=-I @top_srcdir@/include
# Checks for libraries. 
 
# Checks for header files. 
 
# Checks for typedefs, structures, and compiler characteristics. 
 
# Checks for library functions. 
 
PKG_PROG_PKG_CONFIG 
 
# ... 
 
# Check for Qt libraries 
PKG_CHECK_MODULES(QT, [QtCore, QtGui], [], [AC_MSG_ERROR([Qt libraries are required.])]) 
 
# Retrieve Qt compilation and linker flags 
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_CHECK_PROGS(MOC, [moc-qt5 moc-qt4 moc]) 
AC_CHECK_PROGS(UIC, [uic-qt5 uic-qt4 uic]) 
AC_CHECK_PROGS(RCC, [rcc]) 
 if test -z "$MOC" || test -z "$UIC" || test -z "$RCC"; then 
   AC_MSG_ERROR([Qt utility programs moc, uic, and rcc are required.]) 
fi 
 
AC_CONFIG_FILES([Makefile src/Makefile]) 
AC_OUTPUT
Le fichier Makefile.am à la racine du projet, à modifier selon votre projet:
Le fichier src/Makefile.am, à modifier selon votre projet:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
bin_PROGRAMS = hello
hello_CXXFLAGS=-I /usr/include/x86_64-linux-gnu/qt5
hello_SOURCES = main.cpp
si vous utilisez une distribution 32 bits, ce fichier src/Makefile.am sera plus adéquat:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
bin_PROGRAMS = hello
hello_CXXFLAGS=-I /usr/include/i386-linux-gnu/qt5
hello_SOURCES = main.cpp
vous pouvez maintenant utiliser les autotools:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
$ touch AUTHORS ChangeLog NEWS README
$ aclocal && autoheader && automake --gnu -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 - Visualiser dans une fenêtre à part
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
l'installation DESTDIR sert à construire un paquet binaire pour votre distribution
pour remettre le projet dans l'état initial:
pour créer le tarball en .tar.bz2:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
$ ./configure
$ make dist-bz2
pour créer le tarball en .tar.gz:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
$ ./configure
$ make dist

Envoyer le billet « Qt et les autotools (autoconf) » dans le blog Viadeo Envoyer le billet « Qt et les autotools (autoconf) » dans le blog Twitter Envoyer le billet « Qt et les autotools (autoconf) » dans le blog Google Envoyer le billet « Qt et les autotools (autoconf) » dans le blog Facebook Envoyer le billet « Qt et les autotools (autoconf) » dans le blog Digg Envoyer le billet « Qt et les autotools (autoconf) » dans le blog Delicious Envoyer le billet « Qt et les autotools (autoconf) » dans le blog MySpace Envoyer le billet « Qt et les autotools (autoconf) » dans le blog Yahoo

Mis à jour 04/06/2017 à 19h17 par matser

Catégories
Programmation , C++

Commentaires

  1. Avatar de matser
    • |
    • permalink
    bonjour,

    pour coriger la fin:
    pour faire un tarball en bz2, on utilisera plutôt make dist-bzip2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ cd projet-1.0
    $ make dist-bzip2
    ce qui est meilleur car on obtient un tarball sans les fichiers inutiles
    Mis à jour 01/02/2016 à 23h59 par matser
  2. Avatar de matser
    • |
    • permalink
    au préalable, sous Debian:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $su
    # apt-get install autoconf pkg-config qt-sdk
    Mis à jour 02/06/2016 à 18h10 par matser
  3. Avatar de matser
    • |
    • permalink
    On peut utiliser qt5 sous debian jessie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ su
    # apt-get install qt5-default build-essential g++ pkg-config
    le fichier src/Makefile sera alors:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    bin_PROGRAMS = hello
    
    hello_CXXFLAGS=-I /usr/include/i386-linux-gnu/qt5
    
    hello_SOURCES = main.cpp
  4. Avatar de matser
    • |
    • permalink
    je voulais dire le fichier Makefile.am
  5. Avatar de matser
    • |
    • permalink
    avec ubuntu il faut installer automake et non pas automake1.11, sinon aclocal ne fonctionnera pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo apt install automake
    Mis à jour 15/05/2017 à 12h44 par matser