|
|
|
-------------------------------------------------------------------------------
|
|
|
|
NOTE:
|
|
|
|
|
|
|
|
* CMake scripts are "mostly" functional.
|
|
|
|
Use them only if you're know how to use CMake (i.e. be prepared to fix them).
|
|
|
|
See TODO-CMAKE for known pending tasks.
|
|
|
|
|
|
|
|
* The existing automake (./configure), msvc2003 and msvc2005 build files will continue
|
|
|
|
to be supported by exiv2 until at least v0.26.
|
|
|
|
We will flag them as "deprecated" for at least one release cycle (about 12 months).
|
|
|
|
Our plan is to only support CMake when our scripts are feature-complete, stable and documented.
|
|
|
|
|
|
|
|
Robin Mills
|
|
|
|
robin@clanmills.com
|
|
|
|
2015-11-30
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Exiv2 uses cmake, a cross-platform build system, to control the
|
|
|
|
compilation process using platform/compiler independent configuration files.
|
|
|
|
|
|
|
|
TABLE OF CONTENTS
|
|
|
|
-----------------
|
|
|
|
|
|
|
|
1 CMake resources
|
|
|
|
2 Building and Installing for Unix type systems
|
|
|
|
3 Building and Installing for Visual Studio Users
|
|
|
|
4 Building and Installing for other users (Xcode, Eclipse, Qt)
|
|
|
|
|
|
|
|
1 CMake resources
|
|
|
|
=================
|
|
|
|
|
|
|
|
You have to install cmake on your target system.
|
|
|
|
|
|
|
|
Home: http://www.cmake.org/
|
|
|
|
Help: http://www.cmake.org/cmake/help/help.html
|
|
|
|
Doc: http://www.cmake.org/cmake/help/documentation.html
|
|
|
|
Wiki: http://www.cmake.org/Wiki/CMake
|
|
|
|
FAQ: http://www.cmake.org/Wiki/CMake_FAQ
|
|
|
|
|
|
|
|
2 Building and Installing on Linux
|
|
|
|
==================================
|
|
|
|
|
|
|
|
This process also covers MacOS-X Terminal, Cygwin and MinGW users.
|
|
|
|
|
|
|
|
a) From the command line
|
|
|
|
|
|
|
|
Run the following commands from the top directory (containing this
|
|
|
|
file) to configure, build and install the library and utility:
|
|
|
|
|
|
|
|
$ mkdir build
|
|
|
|
$ cd build
|
|
|
|
$ cmake ..
|
|
|
|
$ make
|
|
|
|
$ make install
|
|
|
|
|
|
|
|
To modify the configuration
|
|
|
|
|
|
|
|
$ ccmake ..
|
|
|
|
|
|
|
|
Usual CMake options :
|
|
|
|
|
|
|
|
-DCMAKE_INSTALL_PREFIX : decide where the program will be install on your computer.
|
|
|
|
-DCMAKE_BUILD_TYPE : decide which type of build you want. You can chose between:
|
|
|
|
"debugfull". : for hacking. Include all debug information.
|
|
|
|
"debug".
|
|
|
|
"profile".
|
|
|
|
"relwithdebinfo" : default. use gcc -O2 -g options.
|
|
|
|
"release" : generate stripped and optimized bin files. For packaging.
|
|
|
|
|
|
|
|
Specific Exiv2 options :
|
|
|
|
|
|
|
|
-DEXIV2_ENABLE_SHARED : Build exiv2 as a shared library (dll). [default=on ]
|
|
|
|
-DEXIV2_ENABLE_XMP : Build with XMP metadata support. [default=on ]
|
|
|
|
-DEXIV2_ENABLE_LIBXMP : Build a static convenience Library for XMP. [default=on ]
|
|
|
|
-DEXIV2_ENABLE_PNG : Build with png support (requires libz). [default=on ]
|
|
|
|
-DEXIV2_ENABLE_NLS : Build native language support (requires gettext). [default=on ]
|
|
|
|
-DEXIV2_ENABLE_PRINTUCS2 : Build with Printucs2. [default=on ]
|
|
|
|
-DEXIV2_ENABLE_LENSDATA : Build including lens data. [default=on ]
|
|
|
|
-DEXIV2_ENABLE_COMMERCIAL : Build with the EXV_COMMERCIAL_VERSION symbol set. [default=off]
|
|
|
|
-DEXIV2_ENABLE_BUILD_SAMPLES : Build the unit tests. [default=off]
|
|
|
|
-DEXIV2_ENABLE_BUILD_PO : Build translations files. [default=off]
|
|
|
|
-DEXIV2_ENABLE_CURL : USE Libcurl for HttpIo [default=off]
|
|
|
|
-DEXIV2_ENABLE_SSH : USE Libssh for SshIo [default=off]
|
|
|
|
|
|
|
|
Default install locations
|
|
|
|
|
|
|
|
Use -DCMAKE_INSTALL_PREFIX like this :
|
|
|
|
|
|
|
|
"cmake . -DCMAKE_INSTALL_PREFIX=/usr" is equivalent to "./configure --prefix=/usr" with automake/configure.
|
|
|
|
|
|
|
|
To uninstall Exiv2, run:
|
|
|
|
|
|
|
|
$ make uninstall
|
|
|
|
|
|
|
|
b) Using the cmake GUI
|
|
|
|
|
|
|
|
ccmake
|
|
|
|
|
|
|
|
3 Building and installing for Visual Studio Users
|
|
|
|
=============================================
|
|
|
|
|
|
|
|
exiv2 provides three build environment for users of Visual Studio:
|
|
|
|
|
|
|
|
msvc2003: 32 bit build environment for MSVC 2003
|
|
|
|
msvc2005: 32 bit AND 64 bit build environment for MSVC 2005 and later (2008/10/12/13)
|
|
|
|
cmake: This environment
|
|
|
|
|
|
|
|
CMake doesn't build code. It generates build environments.
|
|
|
|
CMake is a language for describing builds and the CMake interpreter generates
|
|
|
|
the build environment for your system.
|
|
|
|
|
|
|
|
CMake generates MSVC .sln and .vcproj files for your target environment.
|
|
|
|
The files generated by CMake provide 4 configs: Debug|Release|RelWithDebInfo|MinSizeRel
|
|
|
|
The current architecture of CMake requires you to decide before running cmake:
|
|
|
|
1) The version of DevStudio
|
|
|
|
2) 32bit or 64 bit builds
|
|
|
|
3) Building static or shared libraries
|
|
|
|
|
|
|
|
We have two contributed CMake Build Environments:
|
|
|
|
|
|
|
|
1 contrib/cmake/msvc
|
|
|
|
Please read contrib/cmake/msvc/ReadMe.txt
|
|
|
|
|
|
|
|
2 contrib/build/msvc
|
|
|
|
|
|
|
|
For those script you will need:
|
|
|
|
- Cygwin (in order to download all dependencies (zlib, expat, ssl, curl, ssh), including exiv2 trunk from svn)
|
|
|
|
- CMake
|
|
|
|
- SVN (optional)
|
|
|
|
|
|
|
|
Then
|
|
|
|
- put the two scripts (build.cmd and setenv.cmd) into a completely empty directory
|
|
|
|
- adapt the paths in setenv.cmd
|
|
|
|
- open the VS command line shell
|
|
|
|
- execute build.cmd (if there are any errors, the script should tell you)
|
|
|
|
|
|
|
|
Exiv2 should be then packaged in the dist directory with all the .lib, include and binary files you need.
|
|
|
|
|
|
|
|
If you need to compile with different options (without webready for example), simply edit the build.cmd file
|
|
|
|
and adapt the options (somewhere at the end).
|
|
|
|
|
|
|
|
4 Building and Installing for other users (Xcode, Eclipse, Qt)
|
|
|
|
==============================================================
|
|
|
|
|
|
|
|
To be written
|
|
|
|
|
|
|
|
# That's all Folks
|
|
|
|
##
|