PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : makefile



gorba
09-01-2007, 13:39
Hallo

Ich habe ein c Projekt das mit multicasts arbeitet unter linux geschriben. Da ms völlig andere FUnktionen dafür hatt, habe ich es unter linux mit mingw32 übersetzt. Für alle die es unter windows benützen wollen -.-

Nun habe ich ein Problem, dass ich nicht in der Lage bin, ein makefile dazu zu schreiben...

deshalb habe ich ein kleinen shell script dazu geschriben, dass wie folgt aussieht:



basename="${0##*/}"
basename="${basename%.*}"
function usage() {

echo "usage: $basename platform"
}

if [ $# -eq 0 ] ; then
usage
exit 1
fi

CCFLAGS="-I."
case "$1" in
win|windows)
CC=i586-mingw32msvc-gcc
CCFLAGS="$CCFLAGS -mconsole -mwindows"
LDFLAGS="-lws2_32 -lwsock32"
EXTENTION=".exe"
;;
linux)
CC=gcc
CCFLAGS="$CCFLAGS -g "
#CCFLAGS="$CCFLAGS -DNDEBUG "
LDFLAGS=" "
EXTENTION=""
;;
clean)
for f in *.o *.bin probe probe.exe ; do
if [ -e $f ] ; then
echo deleting $f
rm $f
fi
done
exit 0
;;
*)
usage
exit 1
;;
esac

echo "CC=$CC"
echo "CCFLAGS=$CCFLAGS"

objects=""

for c_file in probe.c tools.c sample_file.c mcast_cross.c buffers.c rtp_hdr.c rtcp_hdr.c main.c file_parser.c main_jitter.c probe_dump.c sample_file.c session_dump.c; do
obj_file="${c_file%.c}.o"
echo "$CC $CCFLAGS -o $obj_file -c $c_file"
$CC $CCFLAGS -g -o $obj_file -c $c_file
done
echo "Linking Targets ..."
echo "Probe ..."
echo $CC $CCFLAGS -o probe"${EXTENTION}" probe.o tools.o sample_file.o mcast_cross.o buffers.o$LDFLAGS
echo $CC $CCFLAGS -o analyzer"${EXTENTION}" main.o rtp_hdr.o file_parser.o probe_dump.o sample_file.o tools.o buffers.o rtcp_hdr.o session_dump.o main_jitter.o $LDFLAGS
$CC $CCFLAGS -o probe"${EXTENTION}" probe.o tools.o sample_file.o mcast_cross.o buffers.o $LDFLAGS
$CC $CCFLAGS -o session"${EXTENTION}" main.o rtp_hdr.o file_parser.o probe_dump.o sample_file.o tools.o buffers.o rtcp_hdr.o session_dump.o main_session.o $LDFLAGS
$CC $CCFLAGS -o jitter"${EXTENTION}" main.o rtp_hdr.o file_parser.o probe_dump.o sample_file.o tools.o buffers.o rtcp_hdr.o session_dump.o main_jitter.o $LDFLAGS

exit


kann man so was ähnliches auch mit nem makefile? Ich bring das nicht hin...

Detrius
09-01-2007, 13:56
Wo hapert es denn?

Bei den case-Sachen?
http://www.gnu.org/software/make/manual/make.html#Conditionals

gorba
10-01-2007, 08:49
genau.

ifeq ($(CC),gcc)
$(CC) -o foo $(objects) $(libs_for_gcc)

war schon alles was ich gebraucht habe.
Thx