diff --git a/CMakeLists.txt b/CMakeLists.txt index 6e5366652d..cfecd01e09 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,17 +6,6 @@ # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. -## -# Running cmake in a tree in which we have run ./configure ; make -# creates include/exiv2/exv_conf.h which conflicts with cmake's own exv_conf.h -# This causes incorrect compilation and linking errors. -# -# It's OK to delete this as it will be recreated on demand by /Makefile -if( EXISTS "${CMAKE_SOURCE_DIR}/include/exiv2/exv_conf.h" ) - file(REMOVE "${CMAKE_SOURCE_DIR}/include/exiv2/exv_conf.h") -endif() -## - CMAKE_MINIMUM_REQUIRED( VERSION 3.1.0 ) PROJECT( exiv2 ) @@ -95,11 +84,6 @@ IF( EXIV2_ENABLE_COMMERCIAL ) SET (EXIV2_ENABLE_NLS OFF) ENDIF() -set (PRIVATE_VAR) -if(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.8) - set (PRIVATE_VAR PRIVATE) -endif() - # binary as first, since it workarounds old VS solution compatibility problems INCLUDE_DIRECTORIES( ${CMAKE_SOURCE_DIR}/src/ ${CMAKE_SOURCE_DIR}/include/ ${CMAKE_SOURCE_DIR}/include/exiv2/) @@ -118,6 +102,8 @@ IF( EXIV2_ENABLE_XMP ) ENDIF( EXIV2_ENABLE_XMP ) include( config/generateConfigFile.cmake ) +include_directories(${CMAKE_BINARY_DIR}) # Make the exv_conf.h file visible for the full project + include( config/CMakeChecks.txt ) SET( INSTALL_TARGET_STANDARD_ARGS @@ -147,7 +133,9 @@ SET( XMPSRC ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/ExpatAdapter.cpp ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/XMPUtils.cpp ) -ADD_SUBDIRECTORY( xmpsdk ) +if( EXIV2_ENABLE_LIBXMP ) + ADD_SUBDIRECTORY( xmpsdk ) +endif() ADD_SUBDIRECTORY( src ) IF( EXIV2_ENABLE_BUILD_SAMPLES ) diff --git a/config/findDependencies.cmake b/config/findDependencies.cmake index 36d3ebf481..809c8043d3 100644 --- a/config/findDependencies.cmake +++ b/config/findDependencies.cmake @@ -24,7 +24,6 @@ endif( EXIV2_ENABLE_WEBREADY ) if (EXIV2_ENABLE_XMP) find_package(EXPAT REQUIRED) - include_directories(${EXPAT_INCLUDE_DIR}) endif (EXIV2_ENABLE_XMP) if( EXIV2_ENABLE_NLS ) diff --git a/config/generateConfigFile.cmake b/config/generateConfigFile.cmake index 56fe58815d..c4eb787fbd 100644 --- a/config/generateConfigFile.cmake +++ b/config/generateConfigFile.cmake @@ -64,5 +64,4 @@ return 0; ##################################################################################### -configure_file( config/config.h.cmake ${CMAKE_SOURCE_DIR}/include/exiv2/exv_conf.h @ONLY) -#configure_file( config/config.h.cmake ${CMAKE_SOURCE_DIR}/include/exiv2/exv_conf.h) +configure_file( config/config.h.cmake ${CMAKE_BINARY_DIR}/exv_conf.h @ONLY) diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt index d128825b92..cf33f2fdaa 100644 --- a/samples/CMakeLists.txt +++ b/samples/CMakeLists.txt @@ -48,7 +48,7 @@ FOREACH(entry ${SAMPLES}) STRING( REPLACE ".cpp" "" target ${entry}) ADD_EXECUTABLE( ${target} ${target}.cpp ) ADD_TEST( ${target}_test ${target} ) - TARGET_LINK_LIBRARIES( ${target} ${PRIVATE_VAR} exiv2lib ${CMAKE_THREAD_LIBS_INIT} ${EXPAT_LIBRARIES}) + TARGET_LINK_LIBRARIES( ${target} PRIVATE exiv2lib ${CMAKE_THREAD_LIBS_INIT} ${EXPAT_LIBRARIES}) INSTALL( TARGETS ${target} ${INSTALL_TARGET_STANDARD_ARGS} ) ENDFOREACH(entry ${SAMPLES}) @@ -61,26 +61,28 @@ ENDIF( MSVC ) SET( MC_SRC ${MC_SRC} metacopy.cpp ../src/utils.cpp ) ADD_EXECUTABLE( metacopy ${MC_SRC} ) -TARGET_LINK_LIBRARIES( metacopy ${PRIVATE_VAR} exiv2lib ${CMAKE_THREAD_LIBS_INIT} ${EXPAT_LIBRARIES} ${ZLIB_LIBRARIES}) +TARGET_LINK_LIBRARIES( metacopy PRIVATE exiv2lib ${CMAKE_THREAD_LIBS_INIT} ${EXPAT_LIBRARIES} ${ZLIB_LIBRARIES}) INSTALL( TARGETS metacopy ${INSTALL_TARGET_STANDARD_ARGS} ) SET ( PATHTEST_SRC ${PATHTEST_SRC} path-test.cpp ../src/utils.cpp ) ADD_EXECUTABLE ( pathtest ${PATHTEST_SRC} ) SET_TARGET_PROPERTIES( pathtest PROPERTIES OUTPUT_NAME path-test ) -TARGET_LINK_LIBRARIES( pathtest ${PRIVATE_VAR} exiv2lib ${CMAKE_THREAD_LIBS_INIT} ${EXPAT_LIBRARIES} ${ZLIB_LIBRARIES}) +TARGET_LINK_LIBRARIES( pathtest PRIVATE exiv2lib ${CMAKE_THREAD_LIBS_INIT} ${EXPAT_LIBRARIES} ${ZLIB_LIBRARIES}) INSTALL ( TARGETS pathtest ${INSTALL_TARGET_STANDARD_ARGS} ) SET( EXIV2JSON_SRC exiv2json.cpp Jzon.cpp ) ADD_EXECUTABLE( exiv2json ${EXIV2JSON_SRC} ) SET_TARGET_PROPERTIES( exiv2json PROPERTIES OUTPUT_NAME exiv2json ) -TARGET_LINK_LIBRARIES( exiv2json ${PRIVATE_VAR} ${PRIVATE_VAR} exiv2lib ${CMAKE_THREAD_LIBS_INIT} ${EXPAT_LIBRARIES} ${ZLIB_LIBRARIES}) +TARGET_LINK_LIBRARIES( exiv2json PRIVATE exiv2lib ${CMAKE_THREAD_LIBS_INIT} ${EXPAT_LIBRARIES} ${ZLIB_LIBRARIES}) INSTALL( TARGETS exiv2json ${INSTALL_TARGET_STANDARD_ARGS} ) -SET( GEOTAG_SRC geotag.cpp ) -ADD_EXECUTABLE( geotag ${GEOTAG_SRC} ) -SET_TARGET_PROPERTIES( geotag PROPERTIES OUTPUT_NAME geotag ) -TARGET_LINK_LIBRARIES( geotag ${PRIVATE_VAR} exiv2lib ${CMAKE_THREAD_LIBS_INIT} ${EXPAT_LIBRARIES} ${ZLIB_LIBRARIES}) -INSTALL( TARGETS geotag ${INSTALL_TARGET_STANDARD_ARGS} ) +if( EXIV2_ENABLE_LIBXMP ) + SET( GEOTAG_SRC geotag.cpp ) + ADD_EXECUTABLE( geotag ${GEOTAG_SRC} ) + SET_TARGET_PROPERTIES( geotag PROPERTIES OUTPUT_NAME geotag ) + TARGET_LINK_LIBRARIES( geotag PRIVATE exiv2lib ${EXPAT_LIBRARIES} ${ZLIB_LIBRARIES}) + INSTALL( TARGETS geotag ${INSTALL_TARGET_STANDARD_ARGS} ) +endif() # ****************************************************************************** # Man page diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 7fcebfd34d..367c0997eb 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -260,60 +260,51 @@ if ( MSVC ) if ( EXIV2_ENABLE_STATIC ) TARGET_LINK_LIBRARIES( exiv2lib zlibstatic ${ZLIB_LIBRARIES} ) else() - TARGET_LINK_LIBRARIES( exiv2lib ${PRIVATE_VAR} ${ZLIB_LIBRARIES} ) + TARGET_LINK_LIBRARIES( exiv2lib PRIVATE ${ZLIB_LIBRARIES} ) endif() source_group("Header Files" FILES ${LIBEXIV2_HDR} ) - TARGET_LINK_LIBRARIES( exiv2lib ${PRIVATE_VAR} ${ZLIB_LIBRARIES} ) - TARGET_LINK_LIBRARIES( exiv2lib ${PRIVATE_VAR} ${EXPAT_LIBRARIES} ) source_group("Header Files" FILES ${LIBCURL_HDR} ) - TARGET_LINK_LIBRARIES( exiv2lib ${PRIVATE_VAR} ${CURL_LIBRARIES} ) source_group("Header Files" FILES ${SSH_HDR} ) - TARGET_LINK_LIBRARIES( exiv2lib ${PRIVATE_VAR} ${SSH_LIBRARIES} ) + TARGET_LINK_LIBRARIES( exiv2lib PRIVATE ${ZLIB_LIBRARIES} ${EXPAT_LIBRARIES} + ${CURL_LIBRARIES} ${SSH_LIBRARIES}) else() if ( UNIX AND NOT FREEBSD ) - TARGET_LINK_LIBRARIES( exiv2lib ${PRIVATE_VAR} dl ${EXPAT_LIBRARIES} ) - TARGET_LINK_LIBRARIES( exiv2lib ${PRIVATE_VAR} dl ${CURL_LIBRARIES} ) - TARGET_LINK_LIBRARIES( exiv2lib ${PRIVATE_VAR} dl ${SSH_LIBRARIES} ) - TARGET_LINK_LIBRARIES( exiv2lib ${PRIVATE_VAR} dl ${CMAKE_THREAD_LIBS_INIT} ) + TARGET_LINK_LIBRARIES( exiv2lib PRIVATE dl ${EXPAT_LIBRARIES} ) + TARGET_LINK_LIBRARIES( exiv2lib PRIVATE dl ${CURL_LIBRARIES} ) + TARGET_LINK_LIBRARIES( exiv2lib PRIVATE dl ${SSH_LIBRARIES} ) + TARGET_LINK_LIBRARIES( exiv2lib PRIVATE dl ${CMAKE_THREAD_LIBS_INIT} ) else() - TARGET_LINK_LIBRARIES( exiv2lib ${PRIVATE_VAR} ${EXPAT_LIBRARIES} ) - TARGET_LINK_LIBRARIES( exiv2lib ${PRIVATE_VAR} ${CURL_LIBRARIES} ) - TARGET_LINK_LIBRARIES( exiv2lib ${PRIVATE_VAR} ${SSH_LIBRARIES} ) - TARGET_LINK_LIBRARIES( exiv2lib ${PRIVATE_VAR} ${CMAKE_THREAD_LIBS_INIT} ) + TARGET_LINK_LIBRARIES( exiv2lib PRIVATE ${EXPAT_LIBRARIES} ) + TARGET_LINK_LIBRARIES( exiv2lib PRIVATE ${CURL_LIBRARIES} ) + TARGET_LINK_LIBRARIES( exiv2lib PRIVATE ${SSH_LIBRARIES} ) + TARGET_LINK_LIBRARIES( exiv2lib PRIVATE ${CMAKE_THREAD_LIBS_INIT} ) endif() endif() if( EXIV2_ENABLE_LIBXMP ) - ADD_DEPENDENCIES( exiv2lib xmp ) - if ( MSVC ) - LINK_DIRECTORIES(${LIBRARY_OUTPUT_PATH}/$(ConfigurationName)) - else() - ADD_DEPENDENCIES( exiv2lib xmp) - TARGET_LINK_LIBRARIES( exiv2lib ${PRIVATE_VAR} ${EXPAT_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}) - endif(MSVC) - TARGET_LINK_LIBRARIES( exiv2lib ${PRIVATE_VAR} xmp ) + TARGET_LINK_LIBRARIES( exiv2lib PUBLIC xmp ) ENDIF() IF( EXIV2_ENABLE_PNG ) IF( ZLIB_FOUND ) IF( MSVC ) - TARGET_LINK_LIBRARIES( exiv2lib ${PRIVATE_VAR} optimized ${ZLIB_LIBRARIES} ) + TARGET_LINK_LIBRARIES( exiv2lib PRIVATE optimized ${ZLIB_LIBRARIES} ) ELSE() - TARGET_LINK_LIBRARIES( exiv2lib ${PRIVATE_VAR} ${ZLIB_LIBRARIES} ) + TARGET_LINK_LIBRARIES( exiv2lib PRIVATE ${ZLIB_LIBRARIES} ) ENDIF() ENDIF() ENDIF() IF( EXIV2_ENABLE_NLS ) - TARGET_LINK_LIBRARIES( exiv2lib ${PRIVATE_VAR} ${LIBINTL_LIBRARIES} ) + TARGET_LINK_LIBRARIES( exiv2lib PRIVATE ${LIBINTL_LIBRARIES} ) ENDIF( EXIV2_ENABLE_NLS ) IF( ICONV_FOUND ) - TARGET_LINK_LIBRARIES( exiv2lib ${PRIVATE_VAR} ${ICONV_LIBRARIES} ) + TARGET_LINK_LIBRARIES( exiv2lib PRIVATE ${ICONV_LIBRARIES} ) ENDIF( ICONV_FOUND ) IF (CYGWIN OR MINGW) - TARGET_LINK_LIBRARIES( exiv2lib ${PRIVATE_VAR} psapi ws2_32 ) + TARGET_LINK_LIBRARIES( exiv2lib PRIVATE psapi ws2_32 ) ENDIF(CYGWIN OR MINGW) INSTALL( TARGETS exiv2lib ${INSTALL_TARGET_STANDARD_ARGS} ) @@ -330,7 +321,7 @@ INSTALL( TARGETS exiv2 ${INSTALL_TARGET_STANDARD_ARGS} ) # ****************************************************************************** # connection test application ADD_EXECUTABLE( conntest ${CONNTEST} ) -TARGET_LINK_LIBRARIES( conntest ${PRIVATE_VAR} exiv2lib ${CURL_LIBRARIES} ${SSH_LIBRARIES} ${LIBINTL_LIBRARIES} ) +TARGET_LINK_LIBRARIES( conntest PRIVATE exiv2lib ${CURL_LIBRARIES} ${SSH_LIBRARIES} ${LIBINTL_LIBRARIES} ) # ****************************************************************************** # exifprint application diff --git a/xmpsdk/CMakeLists.txt b/xmpsdk/CMakeLists.txt index 278f5407e0..4e732ffde4 100644 --- a/xmpsdk/CMakeLists.txt +++ b/xmpsdk/CMakeLists.txt @@ -31,18 +31,15 @@ IF( EXIV2_ENABLE_XMP AND EXIV2_ENABLE_LIBXMP ) check_include_file( "stdint.h" EXV_HAVE_STDINT_H ) ADD_LIBRARY( xmp STATIC ${XMPSRC} ) + target_compile_definitions(xmp PUBLIC XML_STATIC) + target_include_directories(xmp PUBLIC ${EXPAT_INCLUDE_DIR}) 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() - GET_TARGET_PROPERTY( XMPLIB xmp LOCATION ) - if ( NOT MSVC ) - TARGET_LINK_LIBRARIES(xmp ${EXPAT_LIBRARIES}) - else() - TARGET_LINK_LIBRARIES(xmp ${CMAKE_THREAD_LIBS_INIT} ${EXPAT_LIBRARIES}) - endif() + target_link_libraries(xmp PUBLIC ${EXPAT_LIBRARIES}) # 1119 Install libxmp.a for use by third party applications (Thanks, Emmanuel) INSTALL(TARGETS xmp ${INSTALL_TARGET_STANDARD_ARGS} ) ENDIF()