cmake_minimum_required(VERSION 3.8) project(plist C CXX) file(GLOB_RECURSE PLIST_HEADER include/plist/*.h) set(PLIST_SRC src/base64.c src/bytearray.c src/hashtable.c src/ptrarray.c src/time64.c src/xplist.c src/bplist.c src/plist.c ) set(PLISTPP_SRC src/Node.cpp src/Structure.cpp src/Array.cpp src/Boolean.cpp src/Data.cpp src/Date.cpp src/Dictionary.cpp src/Integer.cpp src/Key.cpp src/Real.cpp src/String.cpp src/Uid.cpp ) file(GLOB_RECURSE LIBCNARY_HEADER libcnary/include/*.h) file(GLOB_RECURSE LIBCNARY_SRC libcnary/*c) add_library(plist ${PLIST_SRC} ${PLIST_HEADER} ${LIBCNARY_SRC} ${LIBCNARY_HEADER}) target_include_directories(plist PRIVATE src include libcnary/include) set_target_properties(plist PROPERTIES OUTPUT_NAME plist-2.0) add_library(plist++ STATIC ${PLISTPP_SRC} ${PLIST_HEADER} ${LIBCNARY_SRC} ${LIBCNARY_HEADER}) set_target_properties(plist++ PROPERTIES OUTPUT_NAME plist++-2.0) target_include_directories(plist++ PRIVATE src include libcnary/include) if(WIN32 AND BUILD_SHARED_LIBS) target_compile_options(plist PRIVATE -W3 -WX- -sdl-) target_compile_definitions(plist PRIVATE -DLIBPLIST_EXPORTS) target_compile_options(plist++ PRIVATE -W3 -WX- -sdl-) target_compile_definitions(plist++ PRIVATE -DLIBPLIST_EXPORTS) endif() if(NOT BUILD_SHARED_LIBS) target_compile_definitions(plist PRIVATE -DLIBPLIST_STATIC_LIBRARY) endif() target_link_libraries(plist++ PRIVATE plist) install( TARGETS plist plist++ RUNTIME DESTINATION bin ARCHIVE DESTINATION lib LIBRARY DESTINATION lib ) set(PACKAGE_NAME libplist) set(PACKAGE_VERSION 2.0) set(prefix ${CMAKE_INSTALL_PREFIX}) set(exec_prefix \${prefix}) set(libdir \${prefix}/lib) set(includedir \${prefix}/../include) foreach (PLIST_PKGCONFIG libplist-2.0.pc libplist++-2.0.pc) configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/src/${PLIST_PKGCONFIG}.in ${CMAKE_CURRENT_BINARY_DIR}/${PLIST_PKGCONFIG} @ONLY ) install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${PLIST_PKGCONFIG} DESTINATION lib/pkgconfig) endforeach() install(FILES ${PLIST_HEADER} DESTINATION include/plist)