General revision of README-CONAN for Exiv2 v0.27.3

This commit is contained in:
Robin Mills 2020-04-08 17:13:09 +01:00
parent 418e09e7c9
commit 98071b7c3b

View File

@ -1,6 +1,6 @@
![Exiv2](exiv2.png) ![Exiv2](exiv2.png)
# Building Exiv2 dependencies with conan # Building Exiv2 and dependencies with conan
Conan is a portable package manager for C/C++ libraries. It can be used to create all dependencies needed to build Exiv2, without needing to install system packages. Conan is a portable package manager for C/C++ libraries. It can be used to create all dependencies needed to build Exiv2, without needing to install system packages.
@ -11,21 +11,21 @@ Although we provide step-by-step instructions to enable you to build Exiv2 with
To build Exiv2 with conan, you will also need to install CMake. https://cmake.org/download/ To build Exiv2 with conan, you will also need to install CMake. https://cmake.org/download/
_**We do not recommend using conan on MinGW, Cygwin, Unix or to cross compile from Linux to those platforms.**<br>
The build procedures for those platforms are discussed here: See [README.md](README.md)_
<name id="TOC"></a> <name id="TOC"></a>
---- ----
### T A B L E _ OF _ C O N T E N T S ### TABLE OF CONTENTS
1. [Step by Step Guide](#1) 1. [Step by Step Guide](#1)
1. [Install conan](#1-1) 1. [Install conan](#1-1)
2. [Test conan installation](#1-2) 2. [Test conan installation](#1-2)
3. [Create a build directory](#1-3) 3. [Create a build directory](#1-3)
4. [Build dependencies and install conan artefacts in your build directory](#1-4) 4. [Build dependencies, create build environment, build and test](#1-4)
5. [Execute cmake to generate build files for your environment:](#1-5)
2. [Platform Notes](#2) 2. [Platform Notes](#2)
1. [Linux Notes](#2-1) 1. [Linux Notes](#2-1)
2. [Visual Studio Notes](#2-2) 2. [Visual Studio Notes](#2-2)
3. [Cygwin Notes](#2-3)
4. [MinGW Notes](#2-4)
3. [Conan Architecture](#3) 3. [Conan Architecture](#3)
1. [conanfile.py](#3-1) 1. [conanfile.py](#3-1)
2. [Conan Recipes](#3-2) 2. [Conan Recipes](#3-2)
@ -40,6 +40,7 @@ To build Exiv2 with conan, you will also need to install CMake. https://cmake.o
<name id="1"></a> <name id="1"></a>
---- ----
# 1 Step by Step Guide # 1 Step by Step Guide
<name id="1-1"></a> <name id="1-1"></a>
@ -75,23 +76,9 @@ $ mkdir build
$ cd build $ cd build
$ conan profile list $ conan profile list
``` ```
_**Visual Studio Users**_
<name id="1-4"></a> _The profile msvc2019Release `%USERPROFILE%\.conan\profiles\msvc2019Release` is:_
##### 1.4) Build dependencies and install conan artefacts in your build directory</a>
Execute `$ conan install` pointing to the directory containing `conanfile.py`.
```bash
$ conan install .. --build missing # --profile msvc2019Release
```
_**Visual Studio Users**_ should use:
```bash
> $ conan install .. --build missing --profile msvc2019Release`
```
The profile msvc2019Release `%USERPROFILE%\.conan\profiles\msvc2019Release` is:
```ini ```ini
[build_requires] [build_requires]
@ -108,23 +95,20 @@ os_build=Windows
[env] [env]
``` ```
Profiles for Visual Studio are discussed in detail here: [Visual Studio Notes](#2-2) _Profiles for Visual Studio are discussed in detail here: [Visual Studio Notes](#2-2)__
The output from this command is quite long as conan downloads or builds zlib, expat, curl and other dependencies. <name id="1-4"></a>
##### 1.4) Build dependencies, create build environment, build and test</a>
<name id="1-5"></a>
##### 1.5) Execute cmake to generate build files for your environment.
```bash | | Build Steps | Linux and macOS | Visual Studio |
$ cmake .. # -G "Visual Studio 16 2019" |:--|:--------------|--------------------------------|------------------------------|
``` | **1** | Get conan to fetch dependencies<br><br>The output from this command<br>is quite long as conan<br>downloads or builds<br>zlib, expat, curl and other dependencies.| $ conan install .. --build missing | c:\\..\\build> conan install .. --build missing --profile msvc2019Release |
| **2** | Get cmake to generate<br>makefiles or sln/vcxproj | $ cmake .. | c:\\..\\build> cmake .. -G "Visual Studio 16 2019"
| **3** | Build | $ cmake --build . --config Release | c:\\..\\build> cmake --build .<br>You may prefer to open exiv2.sln and build using the IDE |
| **4**| Optionally Run Test Suite | $ make tests | You must install MinGW<br>bash and python to run tests<br>See [README.md](README.md) |
<name id="1-6"></a>
##### 1.6) Build Exiv2:
```bash
$ cmake --build . --config Release
```
[TOC](#TOC) [TOC](#TOC)
<name id="2"></a> <name id="2"></a>
@ -154,7 +138,7 @@ build_type=Release
##### Changing profile settings ##### Changing profile settings
One of the most important **profile** settings to be adjusted in your conan profile when working on Linux is the field One of the most important **profile** settings to be adjusted in your conan profile when working on Linux is the field:
```bash ```bash
compiler.libcxx=libstdc++11 # Possible values: libstdc++, libstdc++11, libc++ compiler.libcxx=libstdc++11 # Possible values: libstdc++, libstdc++11, libc++
@ -188,9 +172,8 @@ I use the following batch file to start cmd.exe. I do this to reduce the comple
```bat ```bat
@echo off @echo off
setlocal setlocal
cd %HOMEPATH% set "PATH=C:\Python37\;C:\Python37\Scripts;C:\Perl64\site\bin;C:\Perl64\bin;C:\WINDOWS\system32;C:\Program Files\Git\cmd;C:\Program Files\Git\usr\bin;c:\Program Files\cmake\bin;c:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin"
set "PATH=C:\Python34\;C:\Python27\;C:\Python27\Scripts;C:\Perl64\site\bin;C:\Perl64\bin;C:\WINDOWS\system32;C:\Program Files\Git\cmd;C:\Program Files\Git\usr\bin;c:\Program Files\cmake\bin;" cmd /S /K cd %HOMEDRIVE%%HOMEPATH%
cmd
``` ```
@ -198,9 +181,7 @@ cmd
Exiv2 v0.27 can be built with VS 2008, 2010, 2012, 2013, 2015 , 2017 and 2019. Exiv2 v0.27 can be built with VS 2008, 2010, 2012, 2013, 2015 , 2017 and 2019.
Exiv2 v0.27.1 (and later) can be built with VS 2015, 2017 and 2019. I believe Exiv2 will build with 2013 and earlier, however we don't actively support these version of Visual Studio. Exiv2 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 versions earlier than VS 2015.
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: 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:
@ -231,7 +212,9 @@ os_build=Windows
### Tools for Visual Studio 2019 ### 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`): 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 the file `settings.yml` as follows. For me: `%USERPROFILE% == C:\Users\rmills`:
```bat ```bat
copy/y %USERPROFILE%\.conan\settings.yml.new %USERPROFILE%\.conan\settings.yml copy/y %USERPROFILE%\.conan\settings.yml.new %USERPROFILE%\.conan\settings.yml
@ -243,9 +226,9 @@ In the step-by-step guide, the command `$ cmake ..` uses
the default CMake generator. Always use the generator for your version of Visual Studio. For example: the default CMake generator. Always use the generator for your version of Visual Studio. For example:
```bat ```bat
c:\....\exiv2\build> conan install .. --profile msvc2017Release64 --build missing c:\..\build> conan install .. --build missing --profile msvc2017Release64
c:\....\exiv2\build> cmake .. -G "Visual Studio 16 2019" c:\..\build> cmake .. -G "Visual Studio 16 2019"
c:\....\exiv2\build> cmake --build . --config Release c:\..\build> cmake --build . --config Release
``` ```
CMake provides Generators for different editions of Visual Studio. The 64 and 32 bit Generators have different names: CMake provides Generators for different editions of Visual Studio. The 64 and 32 bit Generators have different names:
@ -313,20 +296,7 @@ $ cmake --build . --config Release
``` ```
[TOC](#TOC) [TOC](#TOC)
<name id="2-3"></a>
### 2.3) Cygwin Notes
Do not use conan on the Cygwin Platform. To build Exiv2 for Cygwin use CMake without conan. We recommend installing dependences (expat, zlib) with platform tools or build/install from source.
[TOC](#TOC)
<name id="2-4"></a>
### 2.4) MinGW Notes
Team Exiv2 supports MinGW msys/2. Team Exiv2 does not support MinGW msys/1.0.
As with Cygwin, we do not recommend using conan to build on the MinGW/msys2 platform. We recommend installing dependences (expat, zlib) with platform tools or build/install from source.
[TOC](#TOC)
<name id="3"> <name id="3">
## 3 Conan Architecture ## 3 Conan Architecture
@ -607,4 +577,4 @@ $ cmake -DEXIV2_ENABLE_WEBREADY=ON -DEXIV2_ENABLE_CURL=ON -DEXIV2_ENABLE_SSH=ON
[TOC](#TOC) [TOC](#TOC)
Written by Robin Mills<br>robin@clanmills.com<br>Updated: 2020-04-01 Written by Robin Mills<br>robin@clanmills.com<br>Updated: 2020-04-08