1 message in com.perforce.jammingMany people have problem understandin...| From | Sent On | Attachments |
|---|---|---|
| =?is...@canit.se | 26 Feb 1999 08:18 |
| Subject: | Many people have problem understanding Jam (including me)![]() |
|---|---|
| From: | =?is...@canit.se (=?is...@canit.se) |
| Date: | 02/26/1999 08:18:50 AM |
| List: | com.perforce.jamming |
I see many mails on this list on problems that have to do with understanding the basics of how jam work. (I'm one of them :) I agree very much with someone else who stated that it'd be very nice with some real-world examples. It'd also be very nice with rules in Jambase for building shared libraries. A strong point of Jam, in my opinion, is that the user gets to configure his compiler in the Jambase, and the actual Jamfiles just contain logical information of what sources are to be compiled into what libraries, executables, ...
With help from the mailing list archives I've managed to put together the following Jamfile. I've got two problems with it.
1. jam clean does not remove $(OUTDIR)
2. jam doesn't realize that the files (like debug/inspector.cpp) are in directories. Therefore it doesn't create the subdirectories to $(OUTDIR).
OPTIM = -O6 ; HDRS = header source/gem source/gesture source/net source/opal ; C++FLAGS += -DSOCK_BUFFER_CAST= -DGCC -DMEMORY -fPIC ;
DEBUG = inspector tracer input_parser ; ANIM = anim_animators anim_constraint anim_interactor ; GEM = gemX_cursor gemX_draw gemX_image gemX_input gemX_points gemX_regions gemX_styles gemX_text gemX_time gemX_windows gem_GIF gem_keytrans gem_points ; GESTURE = gest_classifier gest_features gest_matrix gest_trainer inter_gesture ; INTER = inter_basics command_basics inter_choice inter_move_grow inter_new_points inter_text ; NET = connection network ; OBJECT = object object_data formula web dynarray dynmm ; OPAL = opal windows text_fns ; SCRIPT = askclickpos askforvalue askpositionandsize askpositionorsize askselectobj locgen generalizers genval invoke objgen scripting_window search_window undo_dialog_box valgen valinvokegen ; UTILS = am_value types initializer misc priority_list registry standard_slots stdvalue symbol_table univ_lst univ_map value_list ; WIDGETS = dialog_widgets button_widgets editing_commands rich_text scroll_widgets selection_widgets text_widgets widgets ;
SOURCE = anim/$(ANIM).cpp gem/$(GEM).cpp gesture/$(GESTURE).cpp inter/$(INTER).cpp net/$(NET).cpp object/$(OBJECT).cpp opal/$(OPAL).cpp scripting/$(SCRIPT).cpp utils/$(UTILS).cpp widgets/$(WIDGETS).cpp ; DBGSOURCE = $(SOURCE) debug/$(DEBUG).cpp ;
OUTDIR = bin.$(OSFULL[1]:L) ; SEARCH_SOURCE = source ;
SOURCE_GRIST = release ; LOCATE_TARGET = $(SOURCE_GRIST:R=$(OUTDIR)) ; LINKLIBS on libamulet.so = -lstdc++ -L/usr/X11R6/lib -lX11 -lm -lc ; LINK on libamulet.so = gcc -shared ; Main libamulet.so : $(SOURCE) ;
SOURCE_GRIST = develop ; LOCATE_TARGET = $(SOURCE_GRIST:R=$(OUTDIR)) ; LINKLIBS on libamulet-develop.so = -lstdc++ -L/usr/X11R6/lib -lX11 -lm -lc ; LINK on libamulet-develop.so = gcc -shared ; Main libamulet-develop.so : $(DBGSOURCE) ; ObjectC++Flags $(DBGSOURCE) : -DDEBUG ;
--- Niklas




