Files
mars-flaim/ftk/README.W32
2008-07-02 23:01:23 +00:00

117 lines
4.5 KiB
Plaintext

ftk project README for Windows
==============================
Contents:
--------
1. Tools for Building on Windows
2. FTK Runtime Library Use
3. GUI or Command-Line Build
4. Legacy Makefile
Tools for Building on Windows
-----------------------------
Visual C++ 2008 Express is good, but more to the point, it's free. To build
the FLAIM projects, you will need to download and install Visual C++ 2008
Express (which now thankfully comes with a reasonably late version of the
Windows Platform SDK).
You can get Visual C++ 2008 Express here:
http://www.microsoft.com/express/vc
The ">> Download Now!" link on that page, and decide whether you want to
install from the web (slow) or install off-line (also slow - there's no fast
solution, sorry).
Once Visual C++ 2008 Express has been installed you may simply double click
on the ftk\win32\ftk\ftk.sln solution file to bring up the ftk project in the
Visual C++ 2008 IDE. Use the main or context menu options to build the desired
targets.
FTK Runtime Library Use
-----------------------
The flaimtk libraries - both static and dynamic - and the ftktest program
consume the dynamic (DLL) form of the Visual C++ 2008 runtime libraries. This
is in alignment with the use of runtime libraries on Unix platforms. It's more
efficient and flexible to use the DLL versions of these libraries, and it
allows Microsoft to update these libraries as necessary to fix security holes
and defects which may be found in the future.
With each new version of Windows and Microsoft tools, Microsoft platforms
become more security minded - and consequently more secure. This is generally
done by copying features from Unix platforms into the Windows operating system
and into the tools themselves. Visual Studio 2008 is no exception. The most
significant security feature in Visual C++ 2008 (IMHO) is secure package
deployment and executable module manifests. This is nothing less than the
direct equivalent of RPATH's in Unix and Linux, and the usual security
features - and annoying issues - come along with it.
The Visual C++ 2008 runtime libraries include MSVCR90.DLL, MSVCP90.DLL and
MSVCM90.DLL, which represent the C standard library, the C++ standard library,
and the C math library, respectively. These libraries may no longer be simply
dropped into the same directory as your executable and consumed. Executables
and consumer DLL's need to be configured to build with a manifest file (a
default setting for new projects), and the runtime libraries need to be
"deployed". Deployment consists of running a significant algorithm to
determine platform requirements and features, and making the right decisions
to install these runtime libraries.
Developers (like you) will not have a problem executing your own projects
built against the FLAIM libraries because you've installed VC++ 2008,
(actually VC9) which consumes the VC9 runtime libraries, and so deploys them
during its install process. For more information, see this excellent article
on the CodeProjects website:
http://www.codeproject.com/cpp/vcredists_x86.asp
GUI or Command-Line Build
-------------------------
The ftk project is a complete VC++ 2008 project in its own right, and may be
used to build the FLAIM toolkit by simply by changing into the ftk\win32\ftk
sub-directory and then running ONE of the following two commands:
c:> buildall.cmd [debug|release]
c:> devenv ftk.sln
The latter will bring up the Visual C++ 2008 IDE, so you can build in a "GUI"
fashion. The former will use devenv command line options to build from the
command line.
Legacy Makefile
---------------
There is also a legacy makefile (GNUMakefile) that has been hand written
to target flaim for all of the platforms that flaim currently supports. If you
don't want to use autotools, and you don't feel comfortable in the Visual C++
2008 IDE, then you may build for windows by simply running make from the root
of the FLAIM project. This makefile accepts multiple auxilliary targets, which
modify the build in various ways. These auxilliary targets include:
debug
release
32bit
64bit
verbose
usegcc
flm_dbg_log
True build targets include:
libs (default) - flaim libraries (static and dynamic)
checkdb - checkdb.exe
rebuild - rebuild.exe
view - view.exe
ut_basictest - basic unit tests
sample - sample.exe
CAVEAT: We're trying to phase out the legacy GNU makefile build system, so:
1) Don't expect it to last forever, and
2) Don't be surprised if it doesn't work all the time
Enjoy!