From 2d011691f24eea5ce574298af10d658292473fbe Mon Sep 17 00:00:00 2001 From: Luis Diaz Mas Date: Wed, 16 Aug 2017 17:32:45 +0200 Subject: [PATCH] Compile XMP sources as an OBJECT Library --- CMakeLists.txt | 23 +---------------- xmpsdk/CMakeLists.txt | 58 ++++++++++++++++++++++++++++++------------- 2 files changed, 42 insertions(+), 39 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6c1f38ce..b506fe7c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -106,28 +106,7 @@ include_directories(${CMAKE_BINARY_DIR}) # Make the exv_conf.h file visible for include( config/CMakeChecks.txt ) -## -# add sources from XMPSDK directory -# this needs to be done here to be visible to xmpsdk, src and sample sub directories -SET( XMPSRC ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/ExpatAdapter.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/MD5.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/ParseRDF.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/UnicodeConversions.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/WXMPIterator.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/WXMPMeta.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/WXMPUtils.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/XML_Node.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/XMPCore_Impl.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/XMPIterator.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/XMPMeta-GetSet.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/XMPMeta-Parse.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/XMPMeta-Serialize.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/XMPMeta.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/XMPUtils-FileInfo.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/XMPUtils.cpp -) - -if( EXIV2_ENABLE_LIBXMP ) +if( EXIV2_ENABLE_XMP ) ADD_SUBDIRECTORY( xmpsdk ) endif() ADD_SUBDIRECTORY( src ) diff --git a/xmpsdk/CMakeLists.txt b/xmpsdk/CMakeLists.txt index da8b8da1..8706eef2 100644 --- a/xmpsdk/CMakeLists.txt +++ b/xmpsdk/CMakeLists.txt @@ -8,9 +8,32 @@ include(../CMake_msvc.txt) msvc_runtime_configure(${EXIV2_ENABLE_SHARED} ${EXIV2_ENABLE_DYNAMIC_RUNTIME}) -if( POLICY CMP0026 ) - cmake_policy(SET CMP0026 OLD) # Something to do with location -endif() +set(XMPSRC src/ExpatAdapter.cpp + src/MD5.cpp + src/ParseRDF.cpp + src/UnicodeConversions.cpp + src/WXMPIterator.cpp + src/WXMPMeta.cpp + src/WXMPUtils.cpp + src/XML_Node.cpp + src/XMPCore_Impl.cpp + src/XMPIterator.cpp + src/XMPMeta-GetSet.cpp + src/XMPMeta-Parse.cpp + src/XMPMeta-Serialize.cpp + src/XMPMeta.cpp + src/XMPUtils-FileInfo.cpp + src/XMPUtils.cpp + include/MD5.h + include/TXMPIterator.hpp + include/TXMPMeta.hpp + include/TXMPUtils.hpp + include/XMP_Const.h + include/XMP_Environment.h + include/XMP.incl_cpp + include/XMPSDK.hpp + include/XMP_Version.h +) FOREACH(_currentfile ${XMPSRC}) # http://www.openguru.com/2009/04/cmake-detecting-platformoperating.html @@ -27,26 +50,27 @@ if(NOT MSVC) endif() endif() -IF( EXIV2_ENABLE_XMP AND EXIV2_ENABLE_LIBXMP ) - check_include_file( "stdint.h" EXV_HAVE_STDINT_H ) +# We generate a CMake OBJECT LIBRARY (a bunch of object files) +add_library( xmp_object OBJECT ${XMPSRC} ) - ADD_LIBRARY( xmp STATIC ${XMPSRC} ) - target_compile_definitions(xmp PUBLIC XML_STATIC) - target_include_directories(xmp PUBLIC ${EXPAT_INCLUDE_DIR}) +#target_compile_definitions(xmp_object PRIVATE XML_STATIC) +#target_include_directories(xmp_object PRIVATE ${EXPAT_INCLUDE_DIR}) +target_include_directories(xmp_object PRIVATE ${CMAKE_SOURCE_DIR}/xmpsdk/include) - target_include_directories(xmp PRIVATE ${CMAKE_SOURCE_DIR}/xmpsdk/include) - if (EXV_HAVE_STDINT_H) - target_compile_definitions(xmp PRIVATE EXV_HAVE_STDINT_H) - endif() +check_include_file( "stdint.h" EXV_HAVE_STDINT_H ) +if (EXV_HAVE_STDINT_H) + target_compile_definitions(xmp_object PUBLIC EXV_HAVE_STDINT_H) +endif() +if( EXIV2_ENABLE_LIBXMP ) + add_library(xmp STATIC $) target_link_libraries(xmp PUBLIC ${EXPAT_LIBRARIES}) + target_include_directories(xmp PUBLIC ${EXPAT_INCLUDE_DIR}) + target_include_directories(xmp PUBLIC ${CMAKE_SOURCE_DIR}/xmpsdk/include) # 1119 Install libxmp.a for use by third party applications (Thanks, Emmanuel) - INSTALL(TARGETS xmp + install(TARGETS xmp LIBRARY DESTINATION lib ARCHIVE DESTINATION lib ) -ENDIF() - -# That's all Folks! -## +endif()