Bonjour à tous,
Je suis en train de développer une application en C++ utilisant les bibliothèques portables gtkmm et cairomm (wrapping C++ de GTK et Cairo, donc).
Je développe sous Linux et je n'ai pas Windows installé sur ma machine. Je souhaiterais donc cross-compiler depuis ma machine.
En cherchant sur le net, je suis tombé sur ce tuto de qualité, amenant à la compilation depuis Linux d'un « Hello World » utilisant l'API Windows : http://www.dumbbell.fr/howto/win32-c...lation.fr.html que j'ai pu suivre jusqu'au bout sans problème (la fenêtre s'affiche bien sous Windows).
Jusque là, tout va bien.
Maintenant, j'essaie de passer à la vitesse supérieure en tentant de compiler mon appli, utilisant les bibliothèques sus-citées.
J'ai suivi ce tuto, expliquant justement comment cross-compiler une appli gtkmm grâce à un package tout fait par les dev de Inkscape (une application multi-plateforme utilisant justement gtkmm) : http://blog.heuristicdesign.co.uk/ar...ns-to-windows/ qui n'a malheureusement pas été concluant, étant donné qu'Inkscape semble utiliser directement Cairo, et non pas cairomm.
Voici la sortie du make :
Aucune erreur concernant GTK, par contre…
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 florian@florian:~/Development/Hard Rock Studio$ make In file included from src/Graphics/Container.h:26, from src/Graphics/Canvas.h:24, from src/MainFrame.h:26, from src/main.cpp:21: src/Graphics/Component.h:44: error: Cairo has not been declared src/Graphics/Component.h:44: error: expected , or ... before < token src/Graphics/Component.h:46: error: Cairo has not been declared src/Graphics/Component.h:46: error: expected , or ... before < token src/Graphics/Component.h:48: error: Cairo has not been declared src/Graphics/Component.h:48: error: expected , or ... before < token In file included from src/Graphics/Canvas.h:24, from src/MainFrame.h:26, from src/main.cpp:21: src/Graphics/Container.h:41: error: Cairo has not been declared src/Graphics/Container.h:41: error: expected , or ... before < token In file included from src/MainFrame.h:26, from src/main.cpp:21: src/Graphics/Canvas.h:50: error: Cairo has not been declared src/Graphics/Canvas.h:50: error: ISO C++ forbids declaration of RefPtr with no type src/Graphics/Canvas.h:50: error: expected ; before < token src/Graphics/Canvas.h:62: error: Cairo has not been declared src/Graphics/Canvas.h:62: error: ISO C++ forbids declaration of RefPtr with no type src/Graphics/Canvas.h:62: error: expected ; before < token make: *** [obj/src/main.o] Erreur 1
Étant donné que je n'ai pas envie de me limiter aux bibliothèques qu'utilise Inkscape, je me dis que j'ai tout intérêt à apprendre à cross-compiler GTK(mm) et Cairo(mm) moi-même.
Je commence donc à me rendre sur le site de GTK, où j'apprends que cette lib se base sur une autre lib appelée glib. Je télécharge donc les sources de glib (glib-2.12.13.tar.gz sur cette page : ftp://ftp.gtk.org/pub/glib/2.12/), et tente de les compiler…
Mais ça foire dés le configure :
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
43
44
45
46
47
48
49
50
51
52
53 florian@florian:~/Development/Cross/glib-2.12.13$ ./autogen.sh --host=i586-mingw32msvc configure: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used. checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for gawk... no checking for mawk... mawk checking whether make sets $(MAKE)... yes checking for i586-mingw32msvc-strip... i586-mingw32msvc-strip checking whether to enable maintainer-specific portions of Makefiles... yes checking build system type... i686-pc-linux-gnu checking host system type... i586-pc-mingw32msvc checking for the BeOS... no checking for Win32... yes checking for i586-mingw32msvc-windres... i586-mingw32msvc-windres checking for i586-mingw32msvc-nm... i586-mingw32msvc-nm checking for i586-mingw32msvc-ranlib... i586-mingw32msvc-ranlib checking for lib.exe... no checking whether to enable garbage collector friendliness... no checking whether to disable memory pools... no configure: WARNING: Disabling static library build, must build as DLL on Windows. checking for i586-mingw32msvc-gcc... i586-mingw32msvc-gcc checking for C compiler default output file name... a.exe checking whether the C compiler works... Invoking /usr/lib/wine/wine.bin ./a.exe ... yes checking whether we are cross compiling... no checking for suffix of executables... .exe checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether i586-mingw32msvc-gcc accepts -g... yes checking for i586-mingw32msvc-gcc option to accept ISO C89... none needed checking for style of include used by make... GNU checking dependency style of i586-mingw32msvc-gcc... gcc3 checking for c++... c++ checking whether we are using the GNU C++ compiler... yes checking whether c++ accepts -g... yes checking dependency style of c++... gcc3 checking for i586-mingw32msvc-gcc option to accept ANSI C... none needed checking for a BSD-compatible install... /usr/bin/install -c checking for special C compiler options needed for large files... no checking for _FILE_OFFSET_BITS value needed for large files... unknown checking for _LARGE_FILES value needed for large files... unknown checking for pkg-config... /usr/bin/pkg-config checking how to get MSVC-compatible struct packing... -mms-bitfields checking for gawk... (cached) mawk checking for perl5... no checking for perl... perl checking for indent... no checking for perl... /usr/bin/perl checking for iconv_open... no checking for libiconv_open in -liconv... no checking for iconv_open in -liconv... no configure: error: *** No iconv() implementation found in C library or libiconv
Bref, tout ça pour dire que j'ai cherché comme un fou, et que rien n'y fait. Vous êtes donc mon dernier recours !
Où est-ce que j'ai faux, dîtes-moi ?
Partager