Ich habe ein C++-Projekt, das in verschiedene Versionen kompiliert, darunter Release, Debug, Shared Library und Executable, mit unterschiedlichen Compiler-Flags für jede Version. Ich probiere Jam als Alternative zu Make aus, weil es mir ein einfacheres System zu sein scheint.
Ist Jam zu so etwas in der Lage? Das Hauptproblem ist, dass es die .o-Dateien immer in denselben Ordner wie die Quelldatei legt, so dass es sie beim Erstellen mehrerer Versionen überschreibt.
Update
Ich habe eine Lösung gefunden, die zu funktionieren scheint. Mit dieser Datei kann ich Debug- und Release-Konfigurationen einer Bibliothek oder einer ausführbaren Datei erstellen.
Befehl zum Erstellen der Release-Bibliothek:
jam -s config=lib -s release=1
Wenn Sie nur eingeben jam
wird die ausführbare Debug-Datei erstellt. Hier ist das Jamfile:
FILES =
main.cpp
;
BASENAME = steve ;
OBJ = obj ;
if $(release)
{
OBJ = $(OBJ)r ;
}
else
{
DEFINES += DEBUG ;
OBJ = $(OBJ)d ;
}
if $(config) = lib
{
OBJ = $(OBJ)_lib ;
OUTFILE = lib$(BASENAME).so ;
DEFINES += SHARED_LIBRARY ;
LINKFLAGS +=
-shared -Wl,-soname,$(OUTFILE) -fvisibility=hidden -fPICS
;
}
else
{
OUTFILE = $(BASENAME) ;
}
LOCATE_TARGET = $(OBJ) ;
MkDir $(LOCATE_TARGET) ;
Main $(OUTFILE) : $(FILES) ;