-
Notifications
You must be signed in to change notification settings - Fork 0
Exiv2/pre-release.exiv2.org
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"> <title>README</title> <style type="text/css"> body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding-top: 10px; padding-bottom: 10px; background-color: white; padding: 30px; } body > *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } a { color: #4183C4; } a.absent { color: #cc0000; } a.anchor { display: block; padding-left: 30px; margin-left: -30px; cursor: pointer; position: absolute; top: 0; left: 0; bottom: 0; } h1, h2, h3, h4, h5, h6 { margin: 20px 0 10px; padding: 0; font-weight: bold; -webkit-font-smoothing: antialiased; cursor: text; position: relative; } h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor, h5:hover a.anchor, h6:hover a.anchor { background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA09pVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoMTMuMCAyMDEyMDMwNS5tLjQxNSAyMDEyLzAzLzA1OjIxOjAwOjAwKSAgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUM2NjlDQjI4ODBGMTFFMTg1ODlEODNERDJBRjUwQTQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUM2NjlDQjM4ODBGMTFFMTg1ODlEODNERDJBRjUwQTQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5QzY2OUNCMDg4MEYxMUUxODU4OUQ4M0REMkFGNTBBNCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5QzY2OUNCMTg4MEYxMUUxODU4OUQ4M0REMkFGNTBBNCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsQhXeAAAABfSURBVHjaYvz//z8DJYCRUgMYQAbAMBQIAvEqkBQWXI6sHqwHiwG70TTBxGaiWwjCTGgOUgJiF1J8wMRAIUA34B4Q76HUBelAfJYSA0CuMIEaRP8wGIkGMA54bgQIMACAmkXJi0hKJQAAAABJRU5ErkJggg==) no-repeat 10px center; text-decoration: none; } h1 tt, h1 code { font-size: inherit; } h2 tt, h2 code { font-size: inherit; } h3 tt, h3 code { font-size: inherit; } h4 tt, h4 code { font-size: inherit; } h5 tt, h5 code { font-size: inherit; } h6 tt, h6 code { font-size: inherit; } h1 { font-size: 28px; color: black; } h2 { font-size: 24px; border-bottom: 1px solid #cccccc; color: black; } h3 { font-size: 18px; } h4 { font-size: 16px; } h5 { font-size: 14px; } h6 { color: #777777; font-size: 14px; } p, blockquote, ul, ol, dl, li, table, pre { margin: 15px 0; } hr { background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAECAYAAACtBE5DAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OENDRjNBN0E2NTZBMTFFMEI3QjRBODM4NzJDMjlGNDgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OENDRjNBN0I2NTZBMTFFMEI3QjRBODM4NzJDMjlGNDgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4Q0NGM0E3ODY1NkExMUUwQjdCNEE4Mzg3MkMyOUY0OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4Q0NGM0E3OTY1NkExMUUwQjdCNEE4Mzg3MkMyOUY0OCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PqqezsUAAAAfSURBVHjaYmRABcYwBiM2QSA4y4hNEKYDQxAEAAIMAHNGAzhkPOlYAAAAAElFTkSuQmCC) repeat-x 0 0; border: 0 none; color: #cccccc; height: 4px; padding: 0; } body > h2:first-child { margin-top: 0; padding-top: 0; } body > h1:first-child { margin-top: 0; padding-top: 0; } body > h1:first-child + h2 { margin-top: 0; padding-top: 0; } body > h3:first-child, body > h4:first-child, body > h5:first-child, body > h6:first-child { margin-top: 0; padding-top: 0; } a:first-child h1, a:first-child h2, a:first-child h3, a:first-child h4, a:first-child h5, a:first-child h6 { margin-top: 0; padding-top: 0; } h1 p, h2 p, h3 p, h4 p, h5 p, h6 p { margin-top: 0; } li p.first { display: inline-block; } li { margin: 0; } ul, ol { padding-left: 30px; } ul :first-child, ol :first-child { margin-top: 0; } dl { padding: 0; } dl dt { font-size: 14px; font-weight: bold; font-style: italic; padding: 0; margin: 15px 0 5px; } dl dt:first-child { padding: 0; } dl dt > :first-child { margin-top: 0; } dl dt > :last-child { margin-bottom: 0; } dl dd { margin: 0 0 15px; padding: 0 15px; } dl dd > :first-child { margin-top: 0; } dl dd > :last-child { margin-bottom: 0; } blockquote { border-left: 4px solid #dddddd; padding: 0 15px; color: #777777; } blockquote > :first-child { margin-top: 0; } blockquote > :last-child { margin-bottom: 0; } table { padding: 0;border-collapse: collapse; } table tr { border-top: 1px solid #cccccc; background-color: white; margin: 0; padding: 0; } table tr:nth-child(2n) { background-color: #f8f8f8; } table tr th { font-weight: bold; border: 1px solid #cccccc; margin: 0; padding: 6px 13px; } table tr td { border: 1px solid #cccccc; margin: 0; padding: 6px 13px; } table tr th :first-child, table tr td :first-child { margin-top: 0; } table tr th :last-child, table tr td :last-child { margin-bottom: 0; } img { max-width: 100%; } span.frame { display: block; overflow: hidden; } span.frame > span { border: 1px solid #dddddd; display: block; float: left; overflow: hidden; margin: 13px 0 0; padding: 7px; width: auto; } span.frame span img { display: block; float: left; } span.frame span span { clear: both; color: #333333; display: block; padding: 5px 0 0; } span.align-center { display: block; overflow: hidden; clear: both; } span.align-center > span { display: block; overflow: hidden; margin: 13px auto 0; text-align: center; } span.align-center span img { margin: 0 auto; text-align: center; } span.align-right { display: block; overflow: hidden; clear: both; } span.align-right > span { display: block; overflow: hidden; margin: 13px 0 0; text-align: right; } span.align-right span img { margin: 0; text-align: right; } span.float-left { display: block; margin-right: 13px; overflow: hidden; float: left; } span.float-left span { margin: 13px 0 0; } span.float-right { display: block; margin-left: 13px; overflow: hidden; float: right; } span.float-right > span { display: block; overflow: hidden; margin: 13px auto 0; text-align: right; } code, tt { margin: 0 2px; padding: 0 5px; white-space: nowrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; } pre code { margin: 0; padding: 0; white-space: pre; border: none; background: transparent; } .highlight pre { background-color: #f8f8f8; border: 1px solid #cccccc; font-size: 13px; line-height: 19px; overflow: auto; padding: 6px 10px; border-radius: 3px; } pre { background-color: #f8f8f8; border: 1px solid #cccccc; font-size: 13px; line-height: 19px; overflow: auto; padding: 6px 10px; border-radius: 3px; } pre code, pre tt { background-color: transparent; border: none; } sup { font-size: 0.83em; vertical-align: super; line-height: 0; } kbd { display: inline-block; padding: 3px 5px; font-size: 11px; line-height: 10px; color: #555; vertical-align: middle; background-color: #fcfcfc; border: solid 1px #ccc; border-bottom-color: #bbb; border-radius: 3px; box-shadow: inset 0 -1px 0 #bbb } * { -webkit-print-color-adjust: exact; } @media screen and (min-width: 914px) { body { width: 854px; margin:0 auto; } } @media print { table, pre { page-break-inside: avoid; } pre { word-wrap: break-word; } } </style> </head> <body> <table> <thead> <tr> <th style="text-align: center">Travis</th> <th style="text-align: center">AppVeyor</th> <th style="text-align: center">GitLab</th> <th style="text-align: center">Codecov</th> </tr> </thead> <tbody> <tr> <td style="text-align: center"><a href="https://travis-ci.org/Exiv2/exiv2"><img src="https://travis-ci.org/Exiv2/exiv2.svg?branch=master" alt="Build Status"></a></td> <td style="text-align: center"><a href="https://ci.appveyor.com/project/piponazo/exiv2-wutfp/branch/master"><img src="https://ci.appveyor.com/api/projects/status/d6vxf2n0cp3v88al/branch/master?svg=true" alt="Build status"></a></td> <td style="text-align: center"><a href="https://gitlab.com/D4N/exiv2/commits/master"><img src="https://gitlab.com/D4N/exiv2/badges/master/pipeline.svg" alt="pipeline status"></a></td> <td style="text-align: center"><a href="https://codecov.io/gh/Exiv2/exiv2"><img src="https://codecov.io/gh/Exiv2/exiv2/branch/master/graph/badge.svg" alt="codecov"></a></td> </tr> </tbody> </table> <p><name id="TOC"></a></p> <h3 id="toc_0">T A B L E _ OF _ C O N T E N T S</h3> <ol> <li><a href="#1">Welcome to Exiv2</a></li> <li><a href="#2">Building and Installing Exiv2</a> <ol> <li><a href="#2-1">Build/Install/Uninstall Exiv2 on a UNIX-like system</a></li> <li><a href="#2-2">Build/Install Exiv2 with Visual Studio</a></li> <li><a href="#2-3">Build Options</a></li> <li><a href="#2-4">Dependencies</a></li> <li><a href="#2-5">Consuming Exiv2 with CMake</a></li> <li><a href="#2-6">Building Exiv2 Documentation</a></li> <li><a href="#2-7">Building Exiv2 Packages</a></li> </ol></li> <li><a href="#3">License and Support</a> <ol> <li><a href="#3-1">License</a></li> <li><a href="#3-2">Support</a></li> </ol></li> <li><a href="#4">Platform Notes</a> <ol> <li><a href="#4-1">Linux</a></li> <li><a href="#4-2">MacOS-X</a></li> <li><a href="#4-3">MinGW</a></li> <li><a href="#4-4">Cygwin</a></li> <li><a href="#4-5">Microsoft Visual C++</a></li> </ol></li> <li><a href="#5">Test Suit</a> <ol> <li><a href="#5-1">Running tests on a UNIX-like system</a></li> <li><a href="#5-2">Running tests on Visual Studio builds</a></li> </ol></li> </ol> <p><name id="1"></a></p> <h1 id="toc_1">Welcome to Exiv2</h1> <p><img src="http://www.exiv2.org/include/exiv2-logo-big.png" alt="Exiv2"></p> <p>Exiv2 is a C++ library and a command line utility to read, write, delete and modify Exif, IPTC, XMP and ICC image metadata.<br/> The homepage of Exiv2 is: <a href="https://github.com/Exiv2/exiv2">https://github.com/Exiv2/exiv2</a></p> <p>Downloads: [<a href="exiv2-0.27.0.1-Source.tar.gz">Source</a>] [<a href="exiv2-0.27.0.1-Linux.tar.gz">Linux</a>] [<a href="exiv2-0.27.0.1-Darwin.tar.gz">MacOSX</a>] [<a href="exiv2-0.27.0.1-CYGWIN.tar.gz">Cygwin</a>] [<a href="exiv2-0.27.0.1-MinGW.tar.gz">MinGW</a>] [<a href="exiv2-0.27.0.1-msvc.zip">MSVC</a>] [<a href="doc/index.html">Documentation</a>] [<a href="https://cmake.org/download/">CMake</a>]</p> <p>The file <a href="license.txt">license.txt</a> in a bundle describes is a copy of GPLv2 License</p> <p>The file ReadMe.txt in a bundle describes how to install/link code with libraries for their respective platform.</p> <p><a href="#TOC">TOC</a> <name id="2"></a></p> <h2 id="toc_2">2 Building and Installing Exiv2</h2> <p>You need CMake to build Exiv2: https://cmake.org/download/</p> <p><name id="2-1"></a></p> <h3 id="toc_3">2.1 Build/Install/Uninstall Exiv2 on a UNIX-like system</h3> <div><pre><code class="language-none">$ cd <exiv2dir> ; mkdir build ; cd build $ cmake .. -G "Unix Makefiles" ; cmake --build . ; make test $ sudo make install</code></pre></div> <p>This will install the library into the "standard locations". The library will be install in <code>/usr/local/lib</code>, executables (including the exiv2 command-line program) in <code>/usr/local/bin/</code> and header files in <code>/usr/local/include/exiv2</code></p> <h4 id="toc_4">Uninstall Exiv2 on a UNIX-like system</h4> <div><pre><code class="language-none">$ sudo make uninstall</code></pre></div> <p><a href="#TOC">TOC</a> <name id="2-2"></a></p> <h3 id="toc_5">2.2 Build/Install Exiv2 with Visual Studio</h3> <p>We recommend that you use conan with CMake to build Exiv2 with Visual Studio. See <a href="README-CONAN.md">README-CONAN</a> for more information</p> <p><a href="#TOC">TOC</a> <name id="2-3"></a></p> <h3 id="toc_6">2.3 Build options</h3> <p>There are two groups of CMake options. There are many options defined by CMake. Here are some particularly useful options:</p> <table> <thead> <tr> <th style="text-align: left">Options</th> <th style="text-align: left">Purpose</th> </tr> </thead> <tbody> <tr> <td style="text-align: left">CMAKE_INSTALL_PREFIX<br/>CMAKE_BUILD_TYPE<br/>BUILD_SHARED_LIBS</td> <td style="text-align: left">where to install on your computer <em><strong>(/usr/local)</strong></em><br/>type of build <em><strong>(Release)</strong></em><br/>build exiv2lib as shared or static <em><strong>(On)</strong></em></td> </tr> </tbody> </table> <p>Options defined by <exiv2>/CMakeLists.txt include:</p> <div><pre><code class="language-none">576 rmills@rmillsmm:~/gnu/github/exiv2/exiv2 $ grep ^option CMakeLists.txt option( BUILD_SHARED_LIBS "Build exiv2lib as a shared library" ON ) option( EXIV2_ENABLE_XMP "Build with XMP metadata support" ON ) option( EXIV2_ENABLE_EXTERNAL_XMP "Use external version of XMP" OFF ) option( EXIV2_ENABLE_PNG "Build with png support (requires libz)" ON ) option( EXIV2_ENABLE_NLS "Build native language support (requires gettext)" ON ) ... 577 rmills@rmillsmm:~/gnu/github/exiv2/exiv2 $</code></pre></div> <p>Options are defined on the CMake command line: <code> $ cmake -DBUILD_SHARED_LIBS=On -DEXIV2_ENABLE_NLS=OFF </code></p> <p><a href="#TOC">TOC</a> <name id="2-4"></a></p> <h3 id="toc_7">2.4 Dependencies</h3> <p>The following Exiv2 features are enabled by default and require external libraries. You can disable the dependency with CMake options:</p> <table> <thead> <tr> <th style="text-align: left">Feature</th> <th style="text-align: left">Package</th> <th style="text-align: left">cmake option to disable</th> <th style="text-align: left">Availability</th> </tr> </thead> <tbody> <tr> <td style="text-align: left">PNG image support</td> <td style="text-align: left">zlib</td> <td style="text-align: left">-DEXIV2_ENABLE_PNG=Off</td> <td style="text-align: left"><a href="http://www.gnu.org/software/gettext/">http://www.gnu.org/software/gettext/</a></td> </tr> <tr> <td style="text-align: left">Native language support</td> <td style="text-align: left">gettext</td> <td style="text-align: left">-DEXIV2_ENABLE_NLS=Off</td> <td style="text-align: left"><a href="http://zlib.net/">http://zlib.net/</a></td> </tr> <tr> <td style="text-align: left">XMP support</td> <td style="text-align: left">expat</td> <td style="text-align: left">-DEXIV2_ENABLE_XMP=Off</td> <td style="text-align: left"><a href="http://expat.sourceforge.net">http://expat.sourceforge.net</a>/<br/>Use <em><strong>Expat 2.2.6</strong></em> and later</td> </tr> </tbody> </table> <p>On Linux, you may install the dependencies using the distribution's package management system. Install the development package of a dependency to install the header files and static libraries required to build Exiv2.</p> <p>You may choose to install dependences with conan. This is supported on all platforms and is especially useful for users of Visual Studio. See <a href="README-CONAN.md">README-CONAN</a> for more information.</p> <p><a href="#TOC">TOC</a> <name id="2-5"></a></p> <h3 id="toc_8">2.5 Consuming Exiv2 with CMake</h3> <p>When installing exiv2 by running the <strong>install</strong> target we get some files under the folder ${CMAKE_INSTALL_PREFIX/share/exiv2/cmake/.</p> <p>In the example project https://github.com/piponazo/exiv2Consumer you can see how to consume exiv2 via CMake using these files.</p> <p><a href="#TOC">TOC</a> <name id="2-6"></a></p> <h3 id="toc_9">2.6 Building Exiv2 Documentation</h3> <div><pre><code class="language-none">$ cmake ..options.. -DEXIV2_BUILD_DOC=On $ make doc</code></pre></div> <p>To build the documentation, you will need the following products:</p> <table> <thead> <tr> <th style="text-align: left">Product</th> <th style="text-align: left">Availability</th> </tr> </thead> <tbody> <tr> <td style="text-align: left">doxygen<br/>graphviz<br/>python<br/>xsltproc<br/>md5sum</td> <td style="text-align: left"><a href="http://www.doxygen.org/">http://www.doxygen.org/</a><br/><a href="http://www.graphviz.org/">http://www.graphviz.org/</a><br/><a href="http://www.python.org/">http://www.python.org/</a><br/><a href="http://xmlsoft.org/XSLT/">http://xmlsoft.org/XSLT/</a><br/><a href="http://www.microbrew.org/tools/md5sha1sum/">http://www.microbrew.org/tools/md5sha1sum/</a></td> </tr> </tbody> </table> <p><a href="#TOC">TOC</a> <name id="2-7"></a></p> <h3 id="toc_10">2.7 Building Exiv2 Packages</h3> <p>There are two types of Exiv2 packages which are generated by cpack from the cmake command-line.</p> <p>1) Binary Package (library, headers, documentation and sample applications)</p> <p>Create and build exiv2 for your plantform.</p> <div><pre><code class="language-bash">$ git clone https://github.com/exiv2/exiv2 $ mkdir -p exiv2/build $ cd exiv2/build $ cmake .. -G "Unix Makefiles" ... -- Build files have been written to: .../build $ cmake --build . --config Release ... [100%] Built target addmoddel $ make package ... CPack: - package: /path/to/exiv2/build/exiv2-0.27.0.1-Linux.tar.gz generated.</code></pre></div> <p>2) Source Package</p> <div><pre><code class="language-bash">$ make package_source Run CPack packaging tool for source... ... CPack: - package: /path/to/exiv2/build/exiv2-0.27.0.1-Source.tar.bz2 generated.</code></pre></div> <p>You may prefer to run <code>$ cmake --build . --config Release --target package_source</code></p> <p><a href="#TOC">TOC</a> <name id="3"></a></p> <h2 id="toc_11">3 License and Support</h2> <p>All project resources are accessible from the project website. https://github.com/Exiv2/exiv2</p> <p><name id="3-1"></a></p> <h3 id="toc_12">3.1 License</h3> <p>Copyright (C) 2004-2018 Exiv2 authors. You should have received a copy of the file <a href="license.txt">license.txt</a> which details the GPLv2 license.</p> <p>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.</p> <p>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.</p> <p>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.</p> <p><a href="#TOC">TOC</a> <name id="3-2"></a></p> <h3 id="toc_13">3.2 Support</h3> <p>For new bug reports and feature requests, please open an issue in GitHub.</p> <p><a href="#TOC">TOC</a> <name id="4"></a></p> <h2 id="toc_14">4 Platform Notes</h2> <p>There are many ways to set up and configure your platform. The following notes are provided as a guide.</p> <p><name id="4-1"></a></p> <h3 id="toc_15">4.1 Linux</h3> <p>Update your system and install the build tools.</p> <div><pre><code class="language-none">sudo apt --yes update sudo apt install --yes build-essential git libxml2-utils cmake python3 libexpat1-dev</code></pre></div> <p>Get the code from GitHub and build</p> <div><pre><code class="language-none">$ mkdir -p ~/gnu/github/exiv2 $ git clone https://github.com/exiv2/exiv2 $ cd exiv2 $ mkdir build ; cd build ; $ cmake .. -G "Unix Makefiles" $ make</code></pre></div> <p><a href="#TOC">TOC</a> <name id="4-2"></a></p> <h3 id="toc_16">4.2 MacOS-X</h3> <p>You will need to install Xcode and the Xcode command-line tools to build anything on the Mac.</p> <p>You should build and install libexpat and zlib. You may use brew, macports, build from source, or use conan.</p> <p>I recommend that you build and install CMake from source.</p> <p><a href="#TOC">TOC</a> <name id="4-3"></a></p> <h3 id="toc_17">4.3 MinGW</h3> <p>We provide support for both 64bit and 32bit builds using MinGW/msys2. <a href="https://www.msys2.org">https://www.msys2.org</a><br/> Support for MinGW/msys1.0 32 bit build was provided for Exiv2 v0.26. MinGW/msys1.0 is not supported by Team Exiv2 for Exiv2 v0.27 and later.</p> <h4 id="toc_18">MinGW/msys2 64 bit</h4> <p>Install: <a href="http://repo.msys2.org/distrib/x86_64/msys2-x86_64-20180531.exe">http://repo.msys2.org/distrib/x86<em>64/msys2-x86</em>64-20180531.exe</a></p> <p>I use the following batch file to start the MinGW/msys2 64 bit bash shell from the Dos Command Prompt (cmd.exe)</p> <div><pre><code class="language-none">$ cat msys64.bat setlocal set "PATH=c:\msys64\usr\bin;c:\msys64\usr\local\bin;c:\msys64\mingw64\bin;" set "HOME=c:\msys64\home\%USER%" set "PS1=\! \u@\h-64:\w \$ " bash.exe -norc $</code></pre></div> <h4 id="toc_19">MinGW/msys2 32 bit</h4> <p>Install: <a href="http://repo.msys2.org/distrib/i686/msys2-i686-20180531.exe">http://repo.msys2.org/distrib/i686/msys2-i686-20180531.exe</a></p> <p>I use the following batch file to start the MinGW/msys2 32 bit bash shell from the Dos Command Prompt (cmd.exe)</p> <div><pre><code class="language-none">$ cat msys32.bat setlocal set "PATH=c:\msys32\usr\bin;c:\msys32\usr\local\bin;c:\msys32\mingw64\bin;" set "HOME=c:\msys32\home\%USER%" set "PS1=\! \u@\h-32:\w \$ " bash.exe -norc $</code></pre></div> <h4 id="toc_20">Install MinGW Dependencies</h4> <div><pre><code class="language-none">for i in base-devel git cmake coreutils python3 man gcc gdb make dos2unix diffutils zlib-devel libexpat-devel libiconv-devel; do (echo y|pacman -S $i); done</code></pre></div> <h4 id="toc_21">Download exiv2 from github and build</h4> <div><pre><code class="language-none">$ mkdir -p ~/gnu/github/exiv2 $ git clone https://github.com/exiv2/exiv2 $ cd exiv2 $ mkdir build ; cd build ; $ cmake .. -G "Unix Makefiles" $ make</code></pre></div> <h4 id="toc_22">MinGW and Regex</h4> <p>The exiv2 command line program provides a <code>--grep</code> option which filters output. The implementation requires the header file <code><regex.h></code> and supporting library to be available during the build. When not available, the option degrades to a substring match. Because there are multiple versions of <code><regex.h></code> available on the MinGW platform, detection of Regex is always disabled on this platform.</p> <p><a href="#TOC">TOC</a> <name id="4-4"></a></p> <h3 id="toc_23">4.4 Cygwin</h3> <p>Download: <a href="https://cygwin.com/install.html">https://cygwin.com/install.html</a> and run setup-x86_64.exe</p> <p>You need: make, cmake, gcc, pkg-config, dos2unix, zlib-devel, libexpat1-devel, git, python3-interpreter, libiconv, libxml2-utils, libncurses.</p> <p>Download and build libiconv-1.15: <a href="https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz">https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz</a></p> <p>Download and build cmake from source because I can't get the cygwin installed cmake 3.6.2 to work. To build cmake from source, you need libncurses. <a href="https://cmake.org/download/">https://cmake.org/download/</a></p> <p><a href="#TOC">TOC</a> <name id="4-5"></a></p> <h3 id="toc_24">4.5 Microsoft Visual C++</h3> <p>We recommend that you use Conan to build Exiv2 using Microsoft Visual C++. For v0.27, we support Visual Studio 2008, 2010, 2012, 2013, 2015 and 2017.</p> <p>As well as Microsoft Visual Studio, you will need to install CMake, Python3, and Conan.</p> <p>1) Binary installers for CMake on Windows are availably from <a href="https://cmake.org/download/">https://cmake.org/download/</a>.<br/> 2) Binary installers for Python3 are available from <a href="https://python.org">python.org</a><br/> 3) Conan can be installed using python/pip. Details in <a href="README-CONAN.md">README-CONAN.md</a></p> <p><a href="#TOC">TOC</a> <name id="5"></a></p> <h2 id="toc_25">5 Running the test suite</h2> <p>The test suite is a mix of bash and python scripts. The python scripts are new to v0.27 and the bash scripts are being replaced as time permits.</p> <p><name id="5-1"></a></p> <h3 id="toc_26">5.1 Running tests on a UNIX-like system</h3> <p>You can run the suite directly from the build:</p> <div><pre><code class="language-none">$ make build ... $ make tests ... lots of output ... Summary report</code></pre></div> <p>You can run individual tests in the test directory using the environment variable EXIV2_BINDIR to specify the location of the build artifacts. For Cygwin and MinGW/msys builds, also set EXIV2_EXT=.exe</p> <div><pre><code class="language-none">rmills@rmillsmbp-w7 ~/gnu/github/exiv2/exiv2/build $ cd ../test rmills@rmillsmbp-w7 ~/gnu/github/exiv2/exiv2/test $ env EXIV2_BINDIR=${PWD}/../build/bin ./icc-test.sh ICC jpg md5 webp md5 png md5 jpg md5 all testcases passed. rmills@rmillsmbp-w7 ~/gnu/github/exiv2/exiv2/test $ env EXIV2_BINDIR=${PWD}/../build/bin make newtests</code></pre></div> <p><a href="#TOC">TOC</a> <name id="5-2"></a></p> <h3 id="toc_27">5.2 Running tests on Visual Studio builds</h3> <p>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.</p> <div><pre><code class="language-none">$ cd <exiv2dir>/build $ cd ../test $ PATH="/c/Python36:$PATH" $ export EXIV2_EXT=.exe $ export EXIV2_BINDIR=${PWD}/../build/bin</code></pre></div> <p>Once you have modified the PATH and exported EXIV2_BINDIR and EXIV2_EXT, you can execute the test suite as described for Unix type systems:</p> <div><pre><code class="language-none">$ cd <exiv2dir>/test $ make test $ make newtests $ ./icc-test.sh</code></pre></div> <p><a href="#TOC">TOC</a></p> </body> </html>
About
No description, website, or topics provided.
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published