Sorry to cross-post this, but there is information that's probably
important to both the library and to Bibletime.  Attached are files (a
patch, a replacement file and a narrative) related to my building of
SWORD, Bibletime and associated things in Visual Studio.  Drudging
through the details of Build.txt might be a bit boring if you're not
following along, but there are some really nuanced things that I had
to work out which might benefit going back into the library source (a
few headers from SWORD had to either be modified or moved) and
Bibletime's source (there are a large number of files which need
editing and changing, not least of which is the source code itself).
So please, scour the build logic carefully, let me know if you know a
better way to do these things or if you need more information on how
or why I made edits to individual files or settings.  I have the
system down to just 7 unresoved external linker errors as follows:

2>cswordbackend.obj : error LNK2019: unresolved external symbol "void
__cdecl rewinddir(struct DIR *)" (?rewinddir@@YAXPAUDIR@@@Z)
referenced in function "public: bool __thiscall
CSwordBackend::moduleConfig(class QString const &,class
sword::SWConfig &)"
(?modulecon...@cswordbackend@@QAE_NABVQString@@aavswcon...@sword@@@Z)
2>cswordmoduleinfo.obj : error LNK2019: unresolved external symbol
"public: static class lucene::document::Field * __cdecl
lucene::document::Field::UnStored(char const *,char const *,bool)"
(?unsto...@field@docum...@lucene@@sapav...@pbd0_n@Z) referenced in
function "public: virtual void __thiscall
CSwordModuleInfo::buildIndex(void)"
(?buildin...@cswordmoduleinfo@@UAEXXZ)
2>cswordmoduleinfo.obj : error LNK2019: unresolved external symbol
"public: static class lucene::document::Field * __cdecl
lucene::document::Field::UnIndexed(char const *,char const *)"
(?uninde...@field@docum...@lucene@@sapav...@pbd0@Z) referenced in
function "public: virtual void __thiscall
CSwordModuleInfo::buildIndex(void)"
(?buildin...@cswordmoduleinfo@@UAEXXZ)
2>cswordmoduleinfo.obj : error LNK2019: unresolved external symbol
"public: __thiscall
lucene::analysis::standard::StandardAnalyzer::StandardAnalyzer(char
const * *)" (??0standardanaly...@standard@analy...@lucene@@q...@papbd@Z)
referenced in function "public: virtual void __thiscall
CSwordModuleInfo::buildIndex(void)"
(?buildin...@cswordmoduleinfo@@UAEXXZ)
2>cswordmoduleinfo.obj : error LNK2019: unresolved external symbol
"public: char const * __thiscall lucene::document::Document::get(char
const *)const " (?...@document@docum...@lucene@@qbepbd...@z)
referenced in function "public: virtual bool __thiscall
CSwordModuleInfo::searchIndexed(class QString const &,class
sword::ListKey &)"
(?searchinde...@cswordmoduleinfo@@UAE_NABVQString@@aavlist...@sword@@@Z)
2>cswordmoduleinfo.obj : error LNK2019: unresolved external symbol
"public: static class lucene::search::Query * __cdecl
lucene::queryParser::QueryParser::parse(char const *,char const
*,class lucene::analysis::Analyzer *)"
(?pa...@queryparser@querypar...@lucene@@sapavqu...@search@3...@pbd0pavanalyzer@analy...@3@@Z)
referenced in function "public: virtual bool __thiscall
CSwordModuleInfo::searchIndexed(class QString const &,class
sword::ListKey &)"
(?searchinde...@cswordmoduleinfo@@UAE_NABVQString@@aavlist...@sword@@@Z)

As you can see, I'm very close - advice on tracking down these few
would be nice.  But I'm retiring for the night (morning).  Have a
blessed Ash Wednesday and Lent, everyone.

--Greg
Install VS 2008
Download and unpack the Qt4 source into a directory
Launch the VS 2008 Command Line from your Start Menu -> Visual Studio 2008 -> 
Visual Studio Tools -> Visual Studio 2008 Command Line
        -switch to the directory with the unpacked Qt4 source
        -run the command "configure" (this might take about a half hour or so)
        -run the command "nmake"  (this will probably take several hours)
Set an environment variable called QTDIR and set its value equal to the root of 
your Qt4 folder.
Add the Qt4 subdirectory bin\ to your Path
Create a directory on your Desktop called build
Download and unpack cURL into Desktop\build
Download and unpack sword-1.5.11 source into Desktop\build
        -open sword-1.5.11/lib/vcppmake/vc8/libsword.vcproj
        -Right click on "Solution 'libsword' (1 project)" -> Add -> Existing 
Project
        -Navigate to the Desktop\build\curl-<version>\lib\curllib.vcproj and 
open it
        -Right click on the libsword project entry in Solution Explorer -> 
Project Dependencies
        -Click the box so that libsword depends on curllib and select OK
        -Right click on curllib -> Properties then navigate to Configuration 
Properties -> C/C++ -> Preprocessor
        -Edit Preprocessor Definitions: remove _USRDLL and add CURL_STATICLIB
        -Select the Release configuration and repeat editing the Preprocessor 
Definitions
        -Select OK
        -Right click libsword -> Properties then navigate to Configuration 
Properties -> C/C++ -> General
        -Edit Additional Include Directories and add an entry for 
Desktop\build\curl-<version>\include
        -Under Configuration Properties -> C/C++ -> Preprocessor add 
CURLAVAILABLE and CURL_STATICLIB and SWMAKINGDLL to Preprocessor Definitions
        -Do the previous 2 steps again for the configuration Release with ICU 
and select OK when finished
        -Select File -> Save all
        -Select Build -> Batch Build -> set curllib to build both Release and 
Debug versions and choose Build
        -Right click libsword -> Properties and choose Linker -> General
        -In Additional Library Directories add an entry for 
Desktop\build\curl-<version>\lib\Debug
        -Under Release with ICU add an entry for 
Desktop\build\curl-<version>\lib\Release
        -Selec All Configurations from the drop down menus
        -Go to Configuration Properties -> Linker -> Input, under Additional 
Dependencies add curllib.lib, ws2_32.lib, winmm.lib and wldap32.lib and select 
OK when finished
        -Under libsword -> Sword Source Files right click -> Add -> Existing 
item and naviage to 
Desktop\build\sword-1.5.11\src\modules\filters\teihtmlhref.cpp
        -Repeat the above step for src\mgr\installmgr.cpp and 
src\mgr\curlftpt.cpp and src\modules\filters\osishtmlhref.cpp
        -Edit the file osishtmlhref.h and add the macro SWDLLEXPORT on line 17 
between the words "class" and "MyUserData"
        -Right click libsword and select build.
        -Copy src\utilfuns\win32\dirent.h to include\
Download and unpack clucene-core to Desktop\build
        -In VC right click on Solution 'libsword' (2 projects) -> Add -> 
Existing Project and navigate to clucene-core-<version>\win32\CLucene.vcproj 
and open it
        -Select Build -> Batch Build and choose CLucene Debug and Release 
versions, then click Build
Open CMake and point its source AND binary directories to your CLucene 
directory and click "Configure."  After it is doing Configuring, click 
"Configure" again and select OK to the dialog that pops up.
        -Copy the file clucene-core-<version>\src\CLucene\clucene-config.h to 
clucene-core-<version>\build\lib\CLucene\clucene-config.h (you need to make 
this folder)
Download the Boost library headers and simply unpack them to Desktop\build - 
don't bother building or installing anything, all you need are headers
Pull the latest bibletime sources into Desktop\build into a directory titled 
bibletime-svn
        -Open Cmake and tell it the source is in the recently pulled SVN folder
        -Tell it to build in a parallel folder with -build or something like 
that
        -Click Configure and select Visual Studio 9 2008
        -Tell it to create the build directory, if it asks
        -When it complains about the Boost folders, click "Cancel" and check 
"Show Advanced Values."
        -For the first entry, Boost_INCLUDE_DIR, manually point it to 
Desktop\build\boost_<version>\
        -For CLUCENE_INCLUDE_DIR manually select 
Desktop\build\clucene-core-<version>\src
        -For CLUCENE_LIBRARY_DEBUG manually select 
Desktop\build\clucene-core-<version>\build\lib\clucene-coreUDMT.lib
        -For CLUCENE_LIBRARY_DIR select 
Desktop\build\clucene-core-<version>\build\lib
        -For CLUCENE_LIBRARY_RELEASE select 
Desktop\build\clucene-core-<version>\build\lib\clucene-coreUMT.lib
        -Click configure again and just select OK through all the error messages
        -Replace bibletime-svn\cmake\FindSword.cmake with the attached file and 
click "Configure" again
        -Once again, click "OK" through all the error messages
        -Now, manually edit the variables SWORD_INCLUDE_DIR to point to 
Desktop\build\sword-1.5.11\include
        -And finally edit SWORD_LIBRARY to point to 
Desktop\build\sword-1.5.11\lib\vcppmake\vc8\ICUDebug\libsword.lib
        -Click Configure again and select OK when CMake complains that it can't 
locate QTDBUS
        -Select the OK button next to the Configure button when it is available
        -Now go back to VS 2008 and right click on Solution 'libsword' (3 
projects) -> Add -> Existing Project
        -Navigate to build\bibletime-build\bibletime.vcproj and open it
        -Right-click bibletime and select Set as StartUp Project
        -Right-click bibletime -> Properties; Configuration Properties -> C/C++ 
-> General, set Warning Level to Level 1
        -Edit the Additional Include Directories order and move the two 
bibletime entries to the top of the list, click Apply
        -Configuration Properties -> C/C++ -> Code Generation, select the 
Runtime Library as Multi-threaded Debug and hit Apply
        -Configuration Properties -> C/C++ -> Command Line, delete -Wall -O0 -g 
-fexceptions and hit Apply
        -Configuration Properties -> C/C++ -> General, edit Additional Include 
Directories and change the reference to sword-1.5.11\include\sword and just 
delete the final sword from it, click Apply.
        -Configuration Properties -> C/C++ -> Preprocessor, add SWUSINGDLL to 
the Preprocessor Definitions and hit Apply
        -Click OK to get out of the Properties Dialog
        -Right click Bibletime and select Project Dependencies, select CLucene 
and libsword and click OK
        -Edit src\backend\cswordmodulesearch.h and delete the line that reads 
#include <pthread.h>
        -Edit main.cpp and comment out lines 333 and 336
        -Edit src\frontend\cinfodisplay.cpp and change lines 239, 241, 249, 
257, 259 references to variable 'i' to be for variable 'dummy'
        -Perform a search & replace on the current project for strcasecmp and 
replace it with stricmp and save the files that it modifies
        -Remove the file bibletime_dbus_adaptor.cpp from the project
        -Right click Bibletime and click Build

Attachment: cswordmoduleinfo.patch
Description: Binary data

Attachment: FindSword.cmake
Description: Binary data

_______________________________________________
sword-devel mailing list: sword-devel@crosswire.org
http://www.crosswire.org/mailman/listinfo/sword-devel
Instructions to unsubscribe/change your settings at above page

Reply via email to