Merge pull request #782 from Exiv2/Changes_for_v0.27.1

Changes for v0.27.1
This commit is contained in:
Luis Díaz Más 2019-04-25 22:18:55 +02:00 committed by GitHub
commit 16df09cc75
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 126 additions and 56 deletions

View File

@ -1,7 +1,7 @@
cmake_minimum_required( VERSION 3.3.2 )
project(exiv2
VERSION 0.27.1.1
VERSION 0.27.1
LANGUAGES CXX C
)

View File

@ -189,15 +189,20 @@ cmd
### Profiles for Visual Studio
You can build Exiv2 with Visual Studio 2017 (version 15), 2015 (version 14), 2013 (version 12), 2012 (version 11), 2010 (version 10) or 2008 (version 9).
You create profiles in %HOMEPATH%\.conan\profiles with a text editor. For your convenience, you'll find profiles in **<exiv2dir>/cmake/msvc\_conan\_profiles**. There are 24 in total:
Exiv2 v0.27 can be built with VS 2008, 2010, 2012, 2013, 2015 and 2017.
Exiv2 v0.27.1 (and later) can be built with VS 2015, 2017 and 2019. I believe it will build with 2013 and earlier, however we don't actively support those version of Visual Studio.
v0.28 is being "modernised" to C++11 and will not support C++98. We don't expect Exiv2 v0.28 to build with VS 2008, 2010, 2012 or 2013.
You create profiles in %HOMEPATH%\.conan\profiles with a text editor. For your convenience, you'll find profiles in `<exiv2dir>\cmake/msvc\_conan\_profiles`. There are 26 in total:
```
Profile := msvc{Edition}{Type}{Bits}
Edition := { 2017 | 2015 | 2013 | 2012 | 2010 | 2008 }
Edition := { 2019 | 2017 | 2015 }
Type := { Release | Debug }
Bits := { 64 | 32 }
Examples: msvc2017Release64 msvc2015Debug32
Bits := { 64 | 32 } # 32 bit build is not provided for 2019
Examples: msvc2019Release msvc2017Release64 msvc2015Debug32
```
The profile msvc2017Release64 is as follows:
@ -217,6 +222,14 @@ os_build=Windows
[env]
```
### Tools for Visual Studio 2019
You will need cmake version 3.14 (and up) and conan 1.14 (and up). Additionally, when I upgraded to conan 1.14.3, I had to manually update (For me: `%USERPROFILE% == C:\Users\rmills`):
```bat
copy/y %USERPROFILE%\.conan\settings.yml.new %USERPROFILE%\.conan\settings.yml
```
### CMake Generators for Visual Studio
In the step-by-step guide, the command `$ cmake ..` uses
@ -230,35 +243,35 @@ c:\....\exiv2\build> cmake --build . --config Release
CMake provides Generators for different editions of Visual Studio. The 64 and 32 bit Generators have different names:
| Architecture | Visual Studio 2017 | Visual Studio 2015 | Visual Studio 2013 |
|:--------- |--------------------|--------------------|--------------------|
| 64 bit | "Visual Studio 15 2017 Win64" | "Visual Studio 14 2015 Win64" | "Visual Studio 12 2013 Win64" |
| 32 bit | "Visual Studio 15 2017" | "Visual Studio 14 2015" | "Visual Studio 12 2013 " |
| Architecture | Visual Studio 2019 | Visual Studio 2017 | Visual Studio 2015 |
|:--------- |--------------------|--------------------|--------------------|--------------------|
| 64 bit | "Visual Studio 16 2019" | "Visual Studio 15 2017 Win64" | "Visual Studio 14 2015 Win64" |
| 32 bit | Not provided | "Visual Studio 15 2017" | "Visual Studio 14 2015" |
### Recommended settings for Visual Studio
##### 64 bit Release Build
| | Visual Studio 2017 | Visual Studio 2015|
|:---------|--------------------|--------------------|
| _**conan install .. --profile**_ | msvc2017Release64 | msvc2015Release64 |
| _**cmake -G**_ | "Visual Studio 15 2017 Win64" | "Visual Studio 14 2015 Win64" |
| _**profile**_<br><br><br><br><br><br><br>_ | arch=x86\_64<br>arch\_build=x86\_64<br>build\_type=Release<br>compiler.runtime=MD<br>compiler.version=15<br>compiler=Visual Studio<br>os=Windows<br>os\_build=Windows | arch=x86\_64<br>arch\_build=x86\_64<br>build\_type=Release<br>compiler.runtime=MD<br>compiler.version=14 <br>compiler=Visual Studio<br>os=Windows<br>os\_build=Windows |
| | Visual Studio 2017 | Visual Studio 2017 | Visual Studio 2015|
|:---------|--------------------|--------------------|--------------|
| _**conan install .. --profile**_ | msvc2019Release | msvc2017Release64 | msvc2015Release64 |
| _**cmake -G**_ | "Visual Studio 16 2019" | "Visual Studio 15 2017 Win64" | "Visual Studio 14 2015 Win64" |
| _**profile**_<br><br><br><br><br><br><br>_ | arch=x86\_64<br>arch\_build=x86\_64<br>build\_type=Release<br>compiler.runtime=MD<br>compiler.version=16<br>compiler=Visual Studio<br>os=Windows<br>os\_build=Windows | arch=x86\_64<br>arch\_build=x86\_64<br>build\_type=Release<br>compiler.runtime=MD<br>compiler.version=15<br>compiler=Visual Studio<br>os=Windows<br>os\_build=Windows | arch=x86\_64<br>arch\_build=x86\_64<br>build\_type=Release<br>compiler.runtime=MD<br>compiler.version=14 <br>compiler=Visual Studio<br>os=Windows<br>os\_build=Windows |
##### Debug Builds
|| Visual Studio 2017 | Visual Studio 2015 |
|:-------|-------|------|
| _**conan install .. --profile**_ | msvc2017Debug64 | msvc2015Debug64 |
| _**profile**_<br>_ | build\_type=Debug<br>compiler.runtime=MDd | build_type=Debug<br>compiler.runtime=MDd |
|| Visual Studio 2019 | Visual Studio 2017 | Visual Studio 2015 |
|:-------|-------|------|--------------|
| _**conan install .. --profile**_ | msvc2019Debug | msvc2017Debug64 | msvc2015Debug64 |
| _**profile**_<br>_ | build\_type=Debug<br>compiler.runtime=MDd | build\_type=Debug<br>compiler.runtime=MDd | build_type=Debug<br>compiler.runtime=MDd |
##### 32bit Builds
|| Visual Studio 2017 | Visual Studio 2015 |
|:-----------|--------------------|--------------------|
| _**conan install .. --profile**_ | msvc2017Release32 | msvc2015Release32 |
| _**cmake -G**_ | "Visual Studio 15 2017" | "Visual Studio 14 2015" |
| _**profile**_<br>_ | arch=x86<br>arch\_build=x86 | arch=x86<br>arch\_build=x86 |
|| Visual Studio 2019 | Visual Studio 2017 | Visual Studio 2015 |
|:-----------|--------------------|--------------------|--------------------|
| _**conan install .. --profile**_ | Not provided | msvc2017Release32 | msvc2015Release32 |
| _**cmake -G**_ | Not provided | "Visual Studio 15 2017" | "Visual Studio 14 2015" |
| _**profile**_<br>_ | Not provided | arch=x86<br>arch\_build=x86 | arch=x86<br>arch\_build=x86 |
##### Static Builds
@ -278,7 +291,7 @@ If you wish to use the static C run-time library, use the following option in th
### Changing profile settings with the conan command
It is recommended that you use profiles provided in **<exiv2dir>/cmake/msvc\_conan\_profiles**.
It is recommended that you use profiles provided in `<exiv2dir>/cmake/msvc\_conan\_profiles'.
You can modify profile settings on the command line.
The following example demonstrates making substantial changes to profile settings by performing a 32 bit build using Visual Studio 2015 with a 2017 profile! This example is not considered good practice, it is an illustration to some conan flexibility which be useful when your build environment is automated.
@ -584,4 +597,4 @@ $ cmake -DEXIV2_ENABLE_WEBREADY=ON -DEXIV2_ENABLE_CURL=ON -DEXIV2_ENABLE_SSH=ON
[TOC](#TOC)
Written by Robin Mills<br>robin@clanmills.com<br>Updated: 2018-11-22
Written by Robin Mills<br>robin@clanmills.com<br>Updated: 2019-04-18

View File

@ -582,16 +582,18 @@ rmills@rmillsmbp-w7 ~/gnu/github/exiv2/exiv2/test $ env EXIV2_BINDIR=${PWD}/../b
<name id="4-2">
### 4.2 Running tests on Visual Studio builds
Use the bash interpreter for MinGW/msys2 to run the test suite. It's essential to have a DOS Python3 interpreter on your path. The variables EXIV2\_BINDIR and EXIV2\_EXT enable the test suite to locate the MSVC build artifacts.
Use the bash interpreter for MinGW/msys2 to run the test suite. It's essential to have a DOS Python3 interpreter on your path called `python3.exe` The variables EXIV2\_BINDIR and EXIV2\_EXT enable the test suite to locate the MSVC build artifacts.
```bash
$ cd <exiv2dir>/build
$ cd ../test
$ PATH="/c/Python36:$PATH"
$ PATH="/c/Python37:$PATH"
$ export EXIV2_EXT=.exe
$ export EXIV2_BINDIR=${PWD}/../build/bin
```
**Caution: ** The python3 interpreter must be for DOS and called python3.exe. I copied `c:\Python37\python.exe c:\Python37\python3.exe`
Once you have modified the PATH and and exported EXIV2\_BINDIR and EXIV2\_EXT, you can execute the test suite as described for UNIX-like systems:
```bash
@ -674,12 +676,12 @@ I use the following batch file to start the MinGW/msys2 64 bit bash shell from t
```bat
@echo off
setlocal
set "PATH=c:\msys64\usr\bin;c:\msys64\usr\local\bin;"
set "HOME=c:\msys64\home\rmills"
set "PS1=\! MSYS64:\u@\h:\w \$ "
set PATH="/usr/local/bin/:/usr/bin:/mingw64/bin:/bin:/usr/sbin:/sbin"
set "HOME=c:\msys64\home\%USERNAME%"
if NOT EXIST %HOME% mkdir %HOME%
cd %HOME%
set "PS1=\! MSYS64:\u@\h:\w \$ "
bash.exe -norc
c:\msys64\usr\bin\bash.exe -norc
```
#### MinGW/msys2 32 bit
@ -690,12 +692,12 @@ I use the following batch file to start the MinGW/msys2 32 bit bash shell from t
```bat
@echo off
setlocal
set "PATH=c:\msys32\usr\bin;c:\msys32\usr\local\bin;"
set "HOME=c:\msys32\home\rmills"
set "PS1=\! MSYS32:\u@\h:\w \$ "
set PATH="/usr/local/bin/:/usr/bin:/mingw32/bin:/bin:/usr/sbin:/sbin"
set "HOME=c:\msys32\home\%USERNAME%"
if NOT EXIST %HOME% mkdir %HOME%
cd %HOME%
set "PS1=\! MSYS32:\u@\h:\w \$ "
bash.exe -norc
c:\msys32\usr\bin\bash.exe -norc
```
#### Install MinGW Dependencies
@ -788,4 +790,4 @@ cmd
[TOC](#TOC)
Written by Robin Mills<br>robin@clanmills.com<br>Revised: 2019-03-29
Written by Robin Mills<br>robin@clanmills.com<br>Revised: 2019-04-18

View File

@ -0,0 +1,12 @@
[build_requires]
[settings]
arch=x86_64
build_type=Debug
compiler=Visual Studio
compiler.runtime=MDd
compiler.version=16
os=Windows
arch_build=x86_64
os_build=Windows
[options]
[env]

View File

@ -0,0 +1,12 @@
[build_requires]
[settings]
arch=x86_64
build_type=Release
compiler=Visual Studio
compiler.runtime=MD
compiler.version=16
os=Windows
arch_build=x86_64
os_build=Windows
[options]
[env]

View File

@ -1,3 +1,36 @@
Changes from version 0.27 to 0.27.1
-----------------------------------
https://github.com/Exiv2/exiv2/milestone/3?closed=1 (40)
#781 MinGW exiv2-0.27-Source fails with stdlib.h: No such file or directory.
#780 Support for Visual Studio 2019 using Conan and CMake.
#744 JP2000 -pS (print Structure) throws Invalid slice bounds specified on all jp2 files.
#745 Review/fix documentation concerning CMake support files
#761 Corrections in README.md concerning "Consuming Exiv2 with CMake"
#745 Review/fix documentation concerning CMake support files.
#740 Tests for jp2image.
#726 Doxygen improvements.
#706 Fix access to null pointer in TiffParser.
#700 exiv2-xmp linked privately.
#684 gettext include issue on macOS.
#661 Development of v0.27 dots moved to branch 0.27-maintenance.
#660 Install new file exiv2lib_compiler_detection.h
#644 Xcode fails with Exiv2::BasicError<char>
#644 Old issue tracker (Redmine) is being spammed.
#637 Reliable detection of strerror_r variants.
#634 Fixes for installing exiv2.
#629 xmpsdk: Build with -DBanAllEntityUsage=1.
#628 cmake: Install header files without globbing.
#625 cmake: Use correct installation dirs for doc and cmake configs.
#620 0.27 tarball contains cruft.
#617 Deprecate relics.
#608 Update Nikon lens database.
#603 MSVC cmake+conan with -DEXIV2_ENABLE_LIBSSH=On is broken
#602 MSVC compiler warning with -DEXIV2_ENABLE_VIDEO=On.
#597 Patch for broken ICC profile in PNG files
#590 Several bugs in 0.27-rc3
Changes from version 0.26 to 0.27
---------------------------------

View File

@ -1,7 +1,7 @@
Exiv2 v0.27.1.1
---------------
Exiv2 v0.27.1
-------------
This is RC1 of the first quarterly "dot" release of Exiv2 v0.27
This is the first quarterly "dot" release of Exiv2 v0.27
Thank You to Dan, Luis and Thomas for their huge contribution to this release.
Contributors: Andreas S, Freddie, Gilles, Michal, Phil.
@ -20,17 +20,14 @@ Headline Features of Exiv2 v0.27.1
2) Deprecation warnings for Video, EPS and SSH support.
3) Relocated https://exiv2.org
4) Branch 0.27-maintenance for "dots" to avoid confusion with tag 0.27 (== 0.27.0 code).
5) Support for Visual Studio 2019 using Conan and CMake.
Remaining Issues with v0.27.1 RC1
---------------------------------
The following are not resolved and will either be fixed in v0.27.1 or deferred.
Issues fixed since v0.27.1 RC1
------------------------------
#781 MinGW exiv2-0.27-Source fails with stdlib.h: No such file or directory.
#780 Support for Visual Studio 2019 using Conan and CMake.
#744 JP2000 -pS (print Structure) throws Invalid slice bounds specified on all jp2 files.
#743 Sigma 24-70mm F2,8 DG OS HSM Art not detected
#740 Tests for jp2image.cpp
#662 Documentation to explain how mv works with filename clash
#646 Exiv2 does not find certain AF tags for the Nikon D850
#582 Add support for FocusPosition (Tag9402) in Sony RAW files (ARW)
#547 Insufficient verification(cycle) in function Image::printIFDStructure in image.cpp
#745 Review/fix documentation concerning CMake support files
Changes since 0.27.0
--------------------
@ -62,7 +59,7 @@ https://github.com/Exiv2/exiv2/milestone/3?closed=1
Robin Mills
robin@clanmills.com
2019-03-27
2019-04-18
-------------------------
Release Notes for v0.27.0

View File

@ -2,7 +2,7 @@
.\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1)
.TH EXIV2 1 "Nov 26, 2018"
.TH EXIV2 1 "Apr 25, 2019"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
@ -656,13 +656,13 @@ requirements of the target format. Some tags copied like this may not
make sense in the target image.
.SH SEE ALSO
.TP
.I http://exiv2.dyndns.org/sample.html#modify
.I https://exiv2.org/sample.html#modify
Sample command files.
.TP
.I http://exiv2.dyndns.org/metadata.html
.I https://exiv2.org/metadata.html
Taglists with \fIkey\fP and default \fItype\fP values.
.SH AUTHORS
.B exiv2
was written by Andreas Huggel and others. The Exiv2 project web site is http://exiv2.dyndns.org. The code is hosted on GitHub at https://github.com/exiv2/exiv2
was written by Andreas Huggel and others. The Exiv2 project web site is https://exiv2.org. The code is hosted on GitHub at https://github.com/exiv2/exiv2
.PP
This manual page was originally created for the Debian project by KELEMEN Peter <fuji@debian.org>.

View File

@ -199,8 +199,9 @@ void Exiv2::dumpLibraryInfo(std::ostream& os,const exv_grep_keys_t& keys)
// add edition in brackets
// 7.10 = 2003 8.00 = 2005 etc 12.00 = 2013 13.00 = 2015 (yet the installer labels it as 14.0!)
size_t edition = (_MSC_VER-600)/100;
const char* editions[] = { "0","1","2","3","4","5","6","2003", "2005", "2008", "2010", "2012","2013","2015","2017"};
if ( edition == 13 && _MSC_VER >= 1910 ) edition++ ; // 2017 _MSC_VAR == 1910!
const char* editions[] = { "0","1","2","3","4","5","6","2003", "2005", "2008", "2010", "2012","2013","2015","2017","2019"};
if ( edition == 13 && _MSC_VER >= 1910 ) edition++ ; // 2017 _MSC_VAR == 1910
if ( edition == 13 && _MSC_VER >= 1920 ) edition++ ; // 2019 _MSC_VAR == 1920
if ( edition > lengthof(editions) ) edition = 0 ;
if ( edition ) sprintf(version+::strlen(version)," (%s/%s)",editions[edition],bits==64?"x64":"x86");