Compile private part as an OBJECT library (CMake concept)

v0.27.3
Luis Díaz Más 8 years ago
parent d3748152a7
commit 8c010c903b

@ -45,27 +45,6 @@ set( LIBEXIV2_SRC asfvideo.cpp
xmp.cpp xmp.cpp
xmpsidecar.cpp xmpsidecar.cpp
utilsvideo.cpp utilsvideo.cpp
cr2image_int.cpp
canonmn_int.cpp
casiomn_int.cpp
crwimage_int.cpp
fujimn_int.cpp
makernote_int.cpp
minoltamn_int.cpp
nikonmn_int.cpp
olympusmn_int.cpp
orfimage_int.cpp
panasonicmn_int.cpp
pentaxmn_int.cpp
rw2image_int.cpp
samsungmn_int.cpp
sigmamn_int.cpp
sonymn_int.cpp
#tags_int.cpp
tiffcomposite_int.cpp
tiffimage_int.cpp
tiffvisitor_int.cpp
) )
# Public C++ header files # Public C++ header files
@ -117,6 +96,28 @@ set( LIBEXIV2_HDR ../include/exiv2/asfvideo.hpp
${CMAKE_BINARY_DIR}/exv_conf.h ${CMAKE_BINARY_DIR}/exv_conf.h
) )
set( LIBEXIV2_PRIVATE_SRC cr2image_int.cpp
canonmn_int.cpp
casiomn_int.cpp
crwimage_int.cpp
fujimn_int.cpp
makernote_int.cpp
minoltamn_int.cpp
nikonmn_int.cpp
olympusmn_int.cpp
orfimage_int.cpp
panasonicmn_int.cpp
pentaxmn_int.cpp
rw2image_int.cpp
samsungmn_int.cpp
sigmamn_int.cpp
sonymn_int.cpp
#tags_int.cpp
tiffcomposite_int.cpp
tiffimage_int.cpp
tiffvisitor_int.cpp
)
# Private headers only needed to build the library # Private headers only needed to build the library
set( LIBEXIV2_PRIVATE_HDR canonmn_int.hpp set( LIBEXIV2_PRIVATE_HDR canonmn_int.hpp
casiomn_int.hpp casiomn_int.hpp
@ -159,7 +160,7 @@ endif()
if( EXIV2_ENABLE_PNG ) if( EXIV2_ENABLE_PNG )
set( LIBEXIV2_SRC ${LIBEXIV2_SRC} pngimage.cpp) set( LIBEXIV2_SRC ${LIBEXIV2_SRC} pngimage.cpp)
set( LIBEXIV2_HDR ${LIBEXIV2_HDR} ../include/exiv2/pngimage.hpp ) set( LIBEXIV2_HDR ${LIBEXIV2_HDR} ../include/exiv2/pngimage.hpp )
set( LIBEXIV2_SRC ${LIBEXIV2_SRC} pngchunk_int.cpp) set( LIBEXIV2_PRIVATE_SRC ${LIBEXIV2_PRIVATE_SRC} pngchunk_int.cpp)
set( LIBEXIV2_PRIVATE_HDR ${LIBEXIV2_PRIVATE_HDR} ../include/exiv2/pngimage.hpp) set( LIBEXIV2_PRIVATE_HDR ${LIBEXIV2_PRIVATE_HDR} ../include/exiv2/pngimage.hpp)
endif() endif()
@ -172,7 +173,8 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR})
# ****************************************************************************** # ******************************************************************************
# exiv2lib library # exiv2lib library
add_library( exiv2lib ${LIBEXIV2_SRC} ${LIBEXIV2_HDR} ${LIBEXIV2_PRIVATE_HDR}) add_library( exiv2lib_int OBJECT ${LIBEXIV2_PRIVATE_SRC} ${LIBEXIV2_PRIVATE_HDR})
add_library( exiv2lib ${LIBEXIV2_SRC} ${LIBEXIV2_HDR} $<TARGET_OBJECTS:exiv2lib_int>)
set_target_properties( exiv2lib PROPERTIES set_target_properties( exiv2lib PROPERTIES
VERSION ${GENERIC_LIB_VERSION} VERSION ${GENERIC_LIB_VERSION}
@ -181,7 +183,12 @@ set_target_properties( exiv2lib PROPERTIES
COMPILE_FLAGS ${EXTRA_COMPILE_FLAGS} COMPILE_FLAGS ${EXTRA_COMPILE_FLAGS}
) )
set_target_properties( exiv2lib_int PROPERTIES
POSITION_INDEPENDENT_CODE ON
)
target_compile_definitions(exiv2lib PRIVATE EXV_LOCALEDIR="${CMAKE_INSTALL_LOCALEDIR}" EXV_BUILDING_LIB ) target_compile_definitions(exiv2lib PRIVATE EXV_LOCALEDIR="${CMAKE_INSTALL_LOCALEDIR}" EXV_BUILDING_LIB )
if ( BUILD_SHARED_LIBS ) if ( BUILD_SHARED_LIBS )
target_compile_definitions(exiv2lib PRIVATE EXV_HAVE_DLL ) target_compile_definitions(exiv2lib PRIVATE EXV_HAVE_DLL )
endif() endif()
@ -206,6 +213,10 @@ target_include_directories(exiv2lib PUBLIC
$<INSTALL_INTERFACE:include> $<INSTALL_INTERFACE:include>
) )
target_include_directories(exiv2lib_int PUBLIC
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/include/exiv2>
)
if (EXIV2_ENABLE_WEBREADY) if (EXIV2_ENABLE_WEBREADY)
if( EXIV2_ENABLE_SSH ) if( EXIV2_ENABLE_SSH )

Loading…
Cancel
Save