Last update: June 29, 1997
This file provides directions on how to build YACL and its demo programs using Microsoft Visual C++.
Caveat: YACL cannot be built with the Win16 versions (1.52 and earlier) of Visual C++, because those versions do not have adequate support for templates. I have tested YACL with VC++ version 2.1 under Windows NT version 3.51.
Here are the steps:
0. Create and change into the directory you want to install YACL in. For example, in an NT command window:
md c:\yacl
c:
cd \yacl
1. Unzip the file YACL0160.ZIP, preserving directories. For example:
unzip yacl0160.zip
or, if you use pkunzip under DOS:
pkunzip -d yacl0160.zip
2. Set the environment variable YACLPATH to point to the directory in which yacl was unzipped, e.g.,
set YACLPATH=c:\yacl
3. Modify the control file. Edit the file control/msvcpp.ctl. In that file, set the variable MSVCPATH to point to the bin directory of the compiler. Its default setting in that file is f:\msvc20.
4. Make sure that the directory containing nmake is in your PATH. For example, if you have installed VC++ in e:\msvc20, then make sure that e:\msvc20\bin is in your PATH.
5. Build the libraries. CD into the directory you chose in step 0 and issue the make command in an NT command window, type
nmake -f msvcpp.mak
6. Poke around in the directory structure under basedemo and uidemo; build and try out the programs there using the make files provided. Each directory in uidemo and almost every directory in basedemo contains a VC++-specific makefile named msvcpp.mak which can be used for building the demo. I have provided makefiles for most of the base demos but not all because most, if not all, the base classes are heavily used in the UI classes.
You can also build a debug version of the library via the command
nmake -f msvcpp.mak "DEBUG=-DDEBUG"
Under VC++ 2.1, the iostream classes seem to allocate memory dynamically and release it when the program terminates. The result is that the allocated memory shows up as a leak in the memory leak checker's output, although very likely it isn't a leak.
VC++ seems to generate improper code for default arguments to functions in some circumstances. I had to put in a workaround for this; look in the file basedemo/format1.cxx for an example. Look also in apps/dlged/dlgedit.cxx.
The GUI demos have a peculiar problem: some SimpleVObjects (e.g., the Label, ToggleButton and ExOrToggleButton), when created as children of a CompositeVObject, show a grey background instead of a white one. This should be the default behavior if the object is a child of a Dialog, not a CompositeVObject. This phenomenon does not occur under the other compilers (Borland and Watcom), so it must be something specific to the VC++ runtime system.
VC++ does not include POSIX routines for directory handling. Consequently the Directory class is not supported under that compiler.