Pages : 1
#1 Le 12/01/2010, à 09:27
- bricecol
compilation/linkage tinyxml
Bonjour.
J'ai un problème pour installer tinyxml sur un ubuntu 9.10 64 bits.
Je télécharge tinyxml sur http://sourceforge.net/projects/tinyxml/files/tinyxml/2.5.3/tinyxml_2_5_3.zip/download
J'extrais l'archive et je fais :
colucci@colucci-desktop:~/Téléchargements/tinyxml$ make clean
rm -f core tinyxml.o tinyxmlparser.o xmltest.o tinyxmlerror.o tinystr.o xmltest
colucci@colucci-desktop:~/Téléchargements/tinyxml$
colucci@colucci-desktop:~/Téléchargements/tinyxml$
colucci@colucci-desktop:~/Téléchargements/tinyxml$ make
g++ -c -Wall -Wno-format -g -DDEBUG -DTIXML_USE_STL tinyxml.cpp -o tinyxml.o
g++ -c -Wall -Wno-format -g -DDEBUG -DTIXML_USE_STL tinyxmlparser.cpp -o tinyxmlparser.o
tinyxmlparser.cpp: In static member function ‘static const char* TiXmlBase::SkipWhiteSpace(const char*, TiXmlEncoding)’:
tinyxmlparser.cpp:357: warning: suggest parentheses around ‘&&’ within ‘||’
g++ -c -Wall -Wno-format -g -DDEBUG -DTIXML_USE_STL xmltest.cpp -o xmltest.o
g++ -c -Wall -Wno-format -g -DDEBUG -DTIXML_USE_STL tinyxmlerror.cpp -o tinyxmlerror.o
g++ -c -Wall -Wno-format -g -DDEBUG -DTIXML_USE_STL tinystr.cpp -o tinystr.o
g++ -o xmltest -g tinyxml.o tinyxmlparser.o xmltest.o tinyxmlerror.o tinystr.o
colucci@colucci-desktop:~/Téléchargements/tinyxml$
colucci@colucci-desktop:~/Téléchargements/tinyxml$
colucci@colucci-desktop:~/Téléchargements/tinyxml$ ls
changes.txt tinystr.o tinyxml_lib.vcproj tinyXmlTest.dsp xmltest
docs tinyxml.cpp tinyxml.o tinyXmlTestSTL.dsp xmltest.cpp
echo.dsp tinyxml.dsw tinyxmlparser.cpp tinyXmlTestSTL.vcproj xmltest.o
Makefile tinyxmlerror.cpp tinyxmlparser.o tinyXmlTest.vcproj
readme.txt tinyxmlerror.o tinyxml.sln utf8test.gif
tinystr.cpp tinyxml.h tinyxmlSTL.dsp utf8testverify.xml
tinystr.h tinyxml_lib.dsp tinyxmlSTL.vcproj utf8test.xml
Déjà, pouvez-vous me dire si, d'après-vous, la compilation s'est bien déroulée car je ne vois pas de .so ?
En fait, j'ai un projet C++ et cela fais plusieurs fois que j'essaie d'utiliser tinyxml sans succès. Je sais que je dois inclure le dossier tinyxml (contenant les .h) lors de la compilation de mon projet, çà c'est simple. Mais je n'arrive pas à "linker" tinyxml ?
J'ai déjà lu un topic semblable mais je n'ai pas trouvé de réponse.
Merci d'avance pour votre aide, n'hésitez-pas si vous voulez une trace.
Hors ligne
#2 Le 12/01/2010, à 10:19
- bricecol
Re : compilation/linkage tinyxml
désolé pour le UP mais personne n'a une petite idée ? :-|
Hors ligne
#3 Le 12/01/2010, à 10:38
- Karl_le_rouge
Re : compilation/linkage tinyxml
Tu veux faire un paquet ou bien intégrer tinyxml à ton projet ?
tinyxml n'a pas été conçue pour être une bibliothèque donc le Makefile fourni ne génére pas de bibliothèque partagée. Mais pour y remédier il te suffit de modifier le Makefile fourni pour la générer, pour te donner une idée (pas de gestion de soname mais faudrait le faire)
CXX=g++
CXXFLAGS=-fPIC -c
LDFLAGS=-shared
OBJECTS=$(patsubst %.cpp,%.o,$(wildcard *.cpp))
LIB=libtinyxml.so
%.o: %.cpp
$(CXX) $(CXXFLAGS) $< -o $@
$(LIB): $(OBJECTS)
$(CXX) $(LDFLAGS) $< -o $(LIB)
clean:
rm -f *.o
mrproper: clean
rm -f $(LIB)
L'autre solution recommandée par tinyxml, c'est d'intégrer directement les fichiers à ton projet.
Dernière modification par Karl_le_rouge (Le 12/01/2010, à 10:39)
Hors ligne
#4 Le 12/01/2010, à 10:46
- bricecol
Re : compilation/linkage tinyxml
merci beaucoup ! j'ai intégré les fichiers tiny et çà marche nickel. c'est encore la solution la plus simple je trouve.
Hors ligne
#5 Le 04/01/2011, à 19:25
- feanoren
Re : compilation/linkage tinyxml
Bonjour
je souhaite moi aussi utiliser tinyxml mais je ne vois pas comment intégrer directement les fichiers à mon projet
Je dois inclure tout les .h de tyni (tinystr.h et tinyxml.h) dans mon main?
#include "tinystr.h"
#include "tinyxml.h"
puis compiler (sous g++) de cette manière?
: "g++ main.cpp tinystr.cpp tinystr.h tinyxml.cpp tinyxml.h tinyxmlerror.cpp -o test"
merci
Hors ligne
#6 Le 24/04/2014, à 15:51
- manreset
Re : compilation/linkage tinyxml
Les mauvaises pratiques persistent :
merci beaucoup ! j'ai intégré les fichiers tiny et çà marche nickel. c'est encore la solution la plus simple je trouve.
C'est bien, tu as trouvé la solution mais ce serait encore mieux si tu en faisais profiter tout le monde. Car tel quel ce post est inutile( au mieux " a décripter"), et mène à une impasse comme beaucoup d'autres d'ailleurs sur la toile...
ce n'est pas personnel mais please essayez de penser aux autres! Cela évite que nous fassions à chaque fois le même effort...
puis compiler (sous g++) de cette manière?
: "g++ main.cpp tinystr.cpp tinystr.h tinyxml.cpp tinyxml.h tinyxmlerror.cpp -o test"
Tu as certainement trouvé la solution depuis, mais aucun retour...
J'ai réussi à compiler tinyXML de sourceforge avec une demo (minimaliste), de monde coté j'ai répris le makefile ( tres bien fait) présent dans le zip et je l'ai adapté à mon exemple :
ça compile sans erreur !
demo.cpp :
/// Modele test
#include <iostream>
#include "tinyxml.h"
/*#include <cstdlib>
#include <cstring>
#include <ctime>
#include <stdlib.h>
#include <stdio.h>*/
using namespace std;
int main( void ){
string fichier("exemple.xml");
TiXmlDocument doc( fichier.c_str() );
doc.LoadFile();
return 0;
}
Makefile :
#****************************************************************************
#
# Makefile for TinyXml test.
# Lee Thomason
# www.grinninglizard.com
#
# This is a GNU make (gmake) makefile
#****************************************************************************
# DEBUG can be set to YES to include debugging info, or NO otherwise
DEBUG := NO
# PROFILE can be set to YES to include profiling info, or NO otherwise
PROFILE := NO
# TINYXML_USE_STL can be used to turn on STL support. NO, then STL
# will not be used. YES will include the STL files.
TINYXML_USE_STL := NO
#****************************************************************************
CC := gcc
CXX := g++
LD := g++
AR := ar rc
RANLIB := ranlib
DEBUG_CFLAGS := -Wall -Wno-format -g -DDEBUG
RELEASE_CFLAGS := -Wall -Wno-unknown-pragmas -Wno-format -O3
LIBS :=
DEBUG_CXXFLAGS := ${DEBUG_CFLAGS}
RELEASE_CXXFLAGS := ${RELEASE_CFLAGS}
DEBUG_LDFLAGS := -g
RELEASE_LDFLAGS :=
ifeq (YES, ${DEBUG})
CFLAGS := ${DEBUG_CFLAGS}
CXXFLAGS := ${DEBUG_CXXFLAGS}
LDFLAGS := ${DEBUG_LDFLAGS}
else
CFLAGS := ${RELEASE_CFLAGS}
CXXFLAGS := ${RELEASE_CXXFLAGS}
LDFLAGS := ${RELEASE_LDFLAGS}
endif
ifeq (YES, ${PROFILE})
CFLAGS := ${CFLAGS} -pg -O3
CXXFLAGS := ${CXXFLAGS} -pg -O3
LDFLAGS := ${LDFLAGS} -pg
endif
#****************************************************************************
# Preprocessor directives
#****************************************************************************
ifeq (YES, ${TINYXML_USE_STL})
DEFS := -DTIXML_USE_STL
else
DEFS :=
endif
#****************************************************************************
# Include paths
#****************************************************************************
#INCS := -I/usr/include/g++-2 -I/usr/local/include
INCS :=
#****************************************************************************
# Makefile code common to all platforms
#****************************************************************************
CFLAGS := ${CFLAGS} ${DEFS}
CXXFLAGS := ${CXXFLAGS} ${DEFS}
#****************************************************************************
# Targets of the build
#****************************************************************************
OUTPUT := demo
all: ${OUTPUT}
#****************************************************************************
# Source files
#****************************************************************************
SRCS := tinyxml.cpp tinyxmlparser.cpp demo.cpp tinyxmlerror.cpp tinystr.cpp
# Add on the sources for libraries
SRCS := ${SRCS}
OBJS := $(addsuffix .o,$(basename ${SRCS}))
#****************************************************************************
# Output
#****************************************************************************
${OUTPUT}: ${OBJS}
${LD} -o $@ ${LDFLAGS} ${OBJS} ${LIBS} ${EXTRA_LIBS}
#****************************************************************************
# common rules
#****************************************************************************
# Rules for compiling source files to object files
%.o : %.cpp
${CXX} -c ${CXXFLAGS} ${INCS} $< -o $@
%.o : %.c
${CC} -c ${CFLAGS} ${INCS} $< -o $@
dist:
bash makedistlinux
clean:
-rm -f core ${OBJS} ${OUTPUT}
depend:
#makedepend ${INCS} ${SRCS}
tinyxml.o: tinyxml.h tinystr.h
tinyxmlparser.o: tinyxml.h tinystr.h
demo.o: tinyxml.h tinystr.h
tinyxmlerror.o: tinyxml.h tinystr.h
ou bien sans le Makefile , avec la commande ça marche aussi :
g++ tinyxml.h tinystr.h tinyxml.cpp tinyxmlparser.cpp demo.cpp tinyxmlerror.cpp tinystr.cpp
( je ne suis pas allé plus loin mais je voulais compléter ce post pour les prochains visiteurs...)
Haha les joies des forums ;-)
Hors ligne
Pages : 1