git-svn-id: https://svn.code.sf.net/p/flaim/code/trunk@1098 0109f412-320b-0410-ab79-c3e0c5ffbbe6
197 lines
8.2 KiB
Plaintext
197 lines
8.2 KiB
Plaintext
sql README file for Windows
|
|
===========================
|
|
|
|
Contents:
|
|
--------
|
|
1. Known Build Issues
|
|
2. Tools for Building on Windows
|
|
3. Building the Projects
|
|
4. Visual Studio Runtime Library Use
|
|
5. Legacy Makefile
|
|
|
|
Known Build Issues
|
|
------------------
|
|
|
|
1. There is an occasional build failure due to an "access denied"
|
|
error when attempting to write to a manifest file. Just build
|
|
again, and it will work the second time.
|
|
|
|
2. 64-bit builds of the flaim library have a few warnings, but
|
|
should build cleanly otherwise.
|
|
|
|
3. xflaim and sql don't build cleanly in 64-bit builds yet.
|
|
|
|
Tools for Building on Windows
|
|
-----------------------------
|
|
|
|
The flaim projects contain Visual Studio 2005 solution and project files.
|
|
These files have been tested and work correctly in both VS 2005 and VS 2008.
|
|
|
|
If you choose to use Visual C++ 2005 Express edition (very difficult to
|
|
find these days), you will have to install a recent version of the Windows
|
|
Platform SDK. See this link for details:
|
|
|
|
http://msdn.microsoft.com/en-us/library/ms235626(VS.80).aspx
|
|
|
|
Regardless of which version of VC++ 2005 you use (Express, Professional,
|
|
Enterprise, etc.), you should ensure that you have the latest Visual
|
|
Studio service pack installed. See this link for details concerning the
|
|
Express edition of VC++ 2005, Service Pack 1, for instance:
|
|
|
|
http://www.microsoft.com/downloads/details.aspx?
|
|
FamilyId=7B0B0339-613A-46E6-AB4D-080D4D4A8C4E&
|
|
displaylang=en&displaylang=en
|
|
|
|
Visual C++ 2008 Express good, but more to the point, it's free. Download
|
|
and install Visual C++ 2008 Express (which thankfully now comes with a
|
|
reasonably up-to-date version of the Windows Platform SDK). You can get
|
|
Visual C++ 2008 Express edition here:
|
|
|
|
http://www.microsoft.com/express/vc
|
|
|
|
Click on the "Download" 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).
|
|
|
|
Building the Projects
|
|
---------------------
|
|
|
|
The flaim project solution (.sln) files are located beneath win32
|
|
directories found in the following locations:
|
|
|
|
trunk\flaim
|
|
ftk\win32\ftk - flaimtk.sln
|
|
flaim\win32\flaim - flaim.sln
|
|
xflaim\win32\xflaim - xflaim.sln
|
|
sql\win32\sql - flaimsql.sln
|
|
|
|
If you plan to build these projects individually from the Visual Studio IDE
|
|
using the provided solution files, then you must build the flaim toolkit (ftk)
|
|
project first, followed by any (or all) of the remaining projects.
|
|
|
|
Additionally, you will need to define environment variables that provide the
|
|
higher-level projects (flaim, xflaim, and sql) with the location of the ftk
|
|
project libraries and headers. These variables point to directories, and may
|
|
be defined as absolute or relative paths. For the proper relative locations
|
|
of the ftk project headers and libraries, as defined within the flaim project
|
|
subversion repository, you may simply use the following variable definitions:
|
|
|
|
set FTKINC=..\..\..\..\ftk\src
|
|
set FTKLIB=..\..\..\..\ftk\win32\ftk
|
|
|
|
These definitions must be set within the environment from which the IDE is
|
|
executed. This may be accomplished by setting the variables within a command
|
|
shell, and then executing the Visual Studio 'devenv' command to start the
|
|
IDE from within that shell, or you may set them in the global environment
|
|
(my computer|properties|advance|environment). If you choose to execute the
|
|
IDE from the command prompt, you should execute the vcvarsall.bat file
|
|
provided by Visual Studio, and located within the following directory:
|
|
|
|
c:\program files\microsoft visual studio 8\vc\vcvarsall.bat
|
|
|
|
The Visual Studio 2008 IDE will automatically upgrade the solution and
|
|
project files from VS 2005 format to VS 2008 format. PLEASE DO NOT COMMIT
|
|
THESE CHANGES (if you have commit rights to the flaim project repository).
|
|
|
|
The projects may also be built from Windows command (.cmd) files provided
|
|
in the same locations as the flaim project Visual Studio solution files.
|
|
Additionally, there is a master command file in the trunk\flaim\win32
|
|
directory. This script may be used to build the ftk project, followed by
|
|
one or all of the remaining projects. By default, the master scrip builds
|
|
only the ftk and flaim libraries. To build xflaim and sql, please use the
|
|
--help option on the script's command-line. The scripts are found here:
|
|
|
|
trunk\flaim
|
|
win32 - buildall.cmd
|
|
ftk\win32\ftk - build.cmd
|
|
flaim\win32\flaim - build.cmd
|
|
xflaim\win32\xflaim - build.cmd
|
|
sql\win32\sql - build.cmd
|
|
|
|
The buildall.cmd script is unique in that it sets the appropriate FTK
|
|
environment variables, and then calls the remaining scripts in the proper
|
|
order. The build.cmd scripts are identical to each other, and thus
|
|
interchangeable.
|
|
|
|
Regardless of the method chosen for building the flaim projects, the
|
|
products are left in the individual projects' solution file directories.
|
|
For instance, ftk Win64 Debug products can be found in:
|
|
|
|
flaim/ftk/win32/ftk/x64/Debug
|
|
|
|
If you're using Visual Studio 2008, the build.cmd files will automatically
|
|
detect and upgrade the VS 2005 solution and project files to VS 2008 format.
|
|
PLEASE DO NOT COMMIT THESE CHANGES (if you have commit rights to the flaim
|
|
project repository).
|
|
|
|
Visual Studio Runtime Library Use
|
|
---------------------------------
|
|
|
|
The flaim project libraries - both static and dynamic - and their respective
|
|
utilities consume the dynamic (DLL) form of the Visual C++ 2005/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 them 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 more secure. This is generally done by
|
|
copying features from Unix platforms into the Windows operating system and
|
|
into the tools themselves. Visual Studio 2005/2008 are not exceptions. The
|
|
most significant security feature in Visual C++ 2005/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, along with the usual
|
|
security features - and annoyances.
|
|
|
|
The Visual C++ 2005 runtime libraries include MSVCR80.DLL, MSVCP80.DLL, and
|
|
MSVCM80.DLL, (VS 2008 provides 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 2005 or 2008,
|
|
which consume the VC 2005/2008 runtime libraries, and so deploy them during
|
|
their own installation processes. For more information, see this excellent
|
|
article on the CodeProjects website:
|
|
|
|
http://www.codeproject.com/cpp/vcredists_x86.asp
|
|
|
|
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 feel comfortable in the Visual C++ 2005 or 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! |