You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Dan Čermák 1af8e2875e [testsuite] Add reproducers for CVE-2017-17724 & #209, #211 7 years ago
ci Enable WARNINGS_AS_ERRORS in CI jobs. 7 years ago
cmake Detect Regex lib with cmake instead of pkg_config 7 years ago
contrib Remove COMMERCIAL Cmake variable 7 years ago
doc Remove code related with autotools 7 years ago
include/exiv2 Port Iptc::printStructure & getUshort to slices API 7 years ago
po Move CMake variables to the file where they are used 7 years ago
samples Fix cppcheck issues: passedByValue 7 years ago
src Port Iptc::printStructure & getUshort to slices API 7 years ago
test [testsuite] Add reproducers for CVE-2017-17724 & #209, #211 7 years ago
tests [testsuite] Add reproducers for CVE-2017-17724 & #209, #211 7 years ago
unitTests [binaryToString] Reimplement using Slices 7 years ago
xmpsdk BUILD_INTERFACE for include directories use PROJECT_SOURCE_DIR to allow for being built as a CMake subproject 7 years ago
.clang-format Add .clang-format file 8 years ago
.gitignore Remove leftovers from autotools and .gitignore 7 years ago
.gitlab-ci.yml [CI] Deploy documentation to GitLab pages 7 years ago
.travis.yml [Travis CI] Add new matrix entry: run test suite under Valgrind 7 years ago
ABOUT-NLS Merged revisions 907:999 from gettext branch into trunk 19 years ago
AUTHORS Refer to doc/ChangeLog for authors and other contributors. 15 years ago
CMakeLists.txt CPack: Add tweak number. Now packages include the tweak number in the name 7 years ago
CODING_GUIDELINES.md CONTRUBUTING.md updates (#234) 7 years ago
CONTRIBUTING.md Clarified the workflow description (after input from piponazo). 7 years ago
COPYING Updated copyright and fsf address 20 years ago
COPYING-CMAKE-SCRIPTS use dedicated licence file for CMake Script, as it done into KDE project. 13 years ago
README-CMAKE.md CPack: Intructions about how to use cpack 7 years ago
README-CONAN.md #350 7 years ago
README.md README.md - use markdown headers 7 years ago
TODO-CMAKE Documentation update to withdraw support for MinGW. The code-base has not been modified and will probably build with MinGW. However Team Exiv2 will not support this platform. 8 years ago
WORK-IN-PROGRESS Doc: Add documentation about how to use the external XMP SDK with conan & cmake 7 years ago
appveyor.yml Enable WARNINGS_AS_ERRORS in CI jobs. 7 years ago
codecov.yml Add new codecov yml file to filter the XMKSDK folder out 7 years ago
conanfile.py Use static version of libcurl. 7 years ago

README.md

Travis AppVeyor GitLab Codecov
Build Status Build status pipeline status codecov

    @@@Marco@@@@@b                   ;mm                       /##Gilles###\
    j@@@#Robin",                     Brad                     /@@@Thomas@@@@Q
     @@@#       \                     ##                     @@@b     |@@@b
     @@@#          .;;;;,     ,;;;, ,;;;;  ,;;;p      .;;;   7@@      ]Alan
     @@@#           j@@@@,   ]@@#/  '@@@#  j@@@#      ]@@^           ;@@@"
     @@@Andreas@C     "@@@p @@@"     @@@b   j@@@p     @@b           @@@#/
     @@@#^7"7%#\       ^@@@@@#~      Benb    1@@@    {@#          s@@@#
     @@@#                Niels       @@@b     @@@Q  ]@#         ;@@@#/
     @@@#              ,@@##@@m      @@@b      @@@p @@C        #@@#C
     @@@#       ,/    s@@#  @@@@     @@@b       Volker       @Tuan@
    ]@@@Abhinav@@\   /@@@\    \@@@Q  @@@Q       %@@@#      /@@@@Mahesh@@#
   /@@Raphael@@@@@\ /@@@@@\     C++  Metadata  Library    /@Sridhar@@@v0.26\

Exiv2

Welcome to Exiv2, a C++ library and a command line utility to read and write Exif, IPTC and XMP image metadata. The homepage of Exiv2 is:

http://www.exiv2.org/

See doc/ChangeLog for a list of recent changes to Exiv2.

Exiv2 API and tag reference documentation is at http://www.exiv2.org/doc or you can build it and point your browser to doc/index.html.

For more information on XMP support in Exiv2, see doc/README-XMP.

Building and Installing

You can build the libraries in the following ways:

1 Autotools: UNIX-like systems (including GNU/Linux, MacOS-X, Cygwin (32 and 64), MinGW (32 and 64)

2 Microsoft Visual C++ solutions

  • see msvc/ReadMe.txt (32bit and 64bit builds Visual Studio 2005,08,10,12,13,15)

3 CMake (support for all platforms/compilers except MinGW)

To build a commercial version of the Exiv2 library, see also section "Commercial version" at the end of this file.

On UNIX-like systems, use the GNU configure script. Run the following commands from the top directory (containing this file) to configure, build and install the library and utility:

$ ./configure
$ make
$ sudo make install  (Cygwin/MinGW $ make install)

Caution: If you downloaded the source code from the git repository, you will have to generate the configure script:

$ make config
$ ./configure
$ make
$ sudo make install  (Cygwin/MinGW $ make install)

To build the sample applications:

$ make samples

The default install locations are /usr/local/lib for the library, /usr/local/bin for the exiv2 utility and /usr/local/include/exiv2 for the header files. Use the --prefix=directory option of the configure script to change the default. Run ./configure --help to see a list of all options.

To uninstall Exiv2 from a UNIX-like system, run:

$ sudo make uninstall

Dependencies

The following libexiv2 features are enabled by default and may require external libraries. They can be controlled through configure options. See also ./configure --help.

Feature                     Package   Configure options
--------------------------  --------  ----------------------------
PNG image support           zlib      --without-zlib
                                      --with-zlib=DIR
Native language support     gettext   --disable-nls
Characterset conversions    libiconv  --without-libiconv-prefix
                                      --with-libiconv-prefix[=DIR]
XMP support                 expat     --disable-xmp
                                      --with-expat=DIR

zlib         http://zlib.net/
gettext  *)  http://www.gnu.org/software/gettext/
libiconv *)  http://www.gnu.org/software/libiconv/
expat        http://expat.sourceforge.net/

*) Some systems have gettext and iconv in libc. The configure script (and CMake) should detect this.

On Linux, it is usually best to install the dependencies through the package management system of the distribution together with the corresponding development packages (for the header files and static libraries).

To build the sample programs in the samples directory (make samples), you also need to have the pkg-config program.

To generate the documentation (make doc), you will further need doxygen, graphviz, python and xsltproc.

pkg-config   http://pkg-config.freedesktop.org/wiki/
doxygen      http://www.doxygen.org/
graphviz     http://www.graphviz.org/
python       http://www.python.org/
xsltproc     http://xmlsoft.org/XSLT/
md5sum       http://www.microbrew.org/tools/md5sha1sum/

Troubleshooting

If you have problems building Exiv2 on UNIX-like systems, check the generated config/config.mk and config/config.h files. You should not need to modify any Makefile directly, in particular not src/Makefile!

Support

All project resources are accessible from the project website at http://dev.exiv2.org/projects/exiv2/wiki

Please send feedback or queries to the Exiv2 forum. For new bug reports and feature requests, please open an issue in Github.

Linking your own code with Exiv2

A pkg-config .pc file is installed together with the library. Application developers can use pkg-config(1) to obtain correct compile and link time flags for the Exiv2 library. See samples/Makefile for an example.

If you downloaded Exiv2 directly from the git repository, and you want to build it using the GNU configure script, then you need to have GNU Autoconf installed on your system and create the configure script as the first step:

$ make config

Then run the usual ./configure; make; make install commands.

Exiv2 uses GNU Libtool in order to build shared libraries on a variety of systems. While this is very nice for making usable binaries, it can be a pain when trying to debug a program. For that reason, compilation of shared libraries can be turned off by specifying the --disable-shared option to the configure script.

License

Copyright (C) 2004-2018 Exiv2 authors

Exiv2 is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

Exiv2 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA.