Am Freitag, 27. April 2012 21:53:23 UTC+2 schrieb Zdenko Podobný:
Just remark: My message (3. Februar 2012) is outdated at the moment.
The former VC++ solution was replaced with new (IMHO much better)
solution of Tom Powers (revision 681). All
improvements/suggestions/comments should be against current svn.
Regarding name - Tom suggested naming for VC++ build. This is not
issue for me, even I think it would be good to have the same in case
of multiform libraries... I remember case I need to create python
script that should work on linux and windows and I need to use some
library via ctype. I needed to detect OS, just because of different
names based on OS ;-)
BTW: When I tested mingw+msys build (gcc) on Windows, it named
library as "libtesseract-3.dll" automatically :-) So at the moment
we have:
- libtesseract.so.3.0.2 in case of linux (+ symlinks)
- libtesseract-3.dll in case of mingw on Windows
- libtesseract302.dll in case of VC++ on Windows
Regarding version in name: Well based on my tests I would suggest
not to use the same library name for different versions. I thought
you have the same opinion[1]...
But I miss more version info in language data file (you can not use
3.02 files in 3.01, but you can use 3.01 in 3.02. So you can pray,
that TESSDATA_PREFIX do not point to newer version...)
[1]
http://code.google.com/p/tesseract-ocr/issues/detail?id=362#c84
Actually, it is the other way round. I would suggest a more consistent versioning scheme:
X.Y.Z where
- Changes in Z mean: no API/ABI changes, only internal changes.
- Changes in Y mean: existing API/ABI does not break, not backwards-incompatible changes, but extensions (e.g. new functions) are allowed.
- Changes in Z mean: potential API/ABI breakage.
But maybe the project is in a too early stage for this. It needs quite a bit of planning and discipline.
In the plugin that I am developing I use dynamic loading via ldload()/LoadLibrary(), so I can handle multiple versions of the same DLL.
If there are no backwards-incompatible changes, new versions are automatically supported. However if the signature of some function changes, there will be problems and I have to change the plugin.
With the versioning scheme from above and a DLL name like libtesseract3.dll, I would be on the safe side. If the name changes with every version, I have to update the plugin with every update of tesseract, even if there are no relevant changes.