Christian Kruse: CGI mit C++

Beitrag lesen

你好 Marc,

#include "CGIUtil.cpp"

Nichts für Ungut, aber das tut man so nicht ;) Mache eine Header-Datei, in der du das Interface definierst, und binde dann hinterher die beiden Object-Dateien zusammen. Die Header-Datei hast du ja sogar... du benutzt sie nur nicht... also: #include "CGIUtil.h", dann so kompilieren:

g++ -c -O2 -W -Wall -o cgiutil.o CGIUtil.cpp
g++ -c -O2 -W -Wall -o test_get.o test_get.cpp
g++ -O2 -W -Wall -o test_get.cgi cgiutil.o test_get.o

Das hat den Vorteil, dass du einerseits sauber modularisieren kannst (was machst du, wenn dein Projekt mal n C++-Dateien hat? Sobald du die CGIUtils.cpp in mehr als eine Datei einbindest, gibts Ärger...) und andererseits kannst du so sehr einfach eine Makefile draus bauen, die nur das neu machen würde, das sich geändert hat:

CFLAGS=-O2 -W -Wall

all: test_get.cgi

test_get.cgi: test_get.o cgiutil.o
    g++ $(CFLAGS) -o test_get.cgi cgiutil.o test_get.o

test_get.o: test_get.cpp CGIUtil.h
    g++ -c $(CFLAGS) -o test_get.o test_get.cpp

cgiutil.o: CGIUtil.cpp CGIUtil.h
    g++ -c $(CFLAGS) -o cgiutil.o CGIUtil.cpp

(Die vier Leerzeichen sind eigentlich Tabulatoren. Und das müssen sie auch bleiben - wichtig! ;) Bei Eingabe von "make" (passendes Make-Programm vorrausgesetzt) wird dann das neu kompiliert, was sich geändert hat, und zum Schluss nur neu gebunden. Beschleunigt den Entwicklungsprozess ungemein, glaub mir ;)

再见,
 克里斯蒂安

--
Das Malheur mit dem Open Source | Frühling
Swen Wacker: Denn wer 'ne Blacklist hat, muss halt daran denken, dass er manches nicht sieht... und vor dem posten die Realitaet einschalten
http://wwwtech.de/