set(TARGET serializationplugin) set(TARGET_INCLUDE_DIR ${CMAKE_INSTALL_INCLUDEDIR}/${TARGET}) set(TARGET_LIB_DIR ${CMAKE_INSTALL_LIBDIR}) set(TARGET_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}) set(TARGET_BIN_DIR ${CMAKE_INSTALL_BINDIR}) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) find_package(Qt5 COMPONENTS Core REQUIRED) if(NOT DEFINED QT_QMAKE_EXECUTABLE) find_program(QT_QMAKE_EXECUTABLE "qmake") if(QT_QMAKE_EXECUTABLE STREQUAL QT_QMAKE_EXECUTABLE-NOTFOUND) message(FATAL_ERROR "Could not find qmake executable") endif() endif() execute_process( COMMAND ${QT_QMAKE_EXECUTABLE} -query QT_INSTALL_QML OUTPUT_VARIABLE TARGET_IMPORTS_DIR OUTPUT_STRIP_TRAILING_WHITESPACE ) set(TARGET_IMPORTS_DIR ${TARGET_IMPORTS_DIR}/QtProtobuf) file(GLOB SOURCES qtserializationplugin.cpp qprotobufjsonserializerimpl.cpp qprotobufserializerimpl.cpp) file(GLOB HEADERS qtserializationplugin.h qtserialization_global.h) add_library(${TARGET} SHARED ${SOURCES}) target_link_libraries(${TARGET} PRIVATE Qt5::Core Qt5::Qml ${QTPROTOBUF_COMMON_NAMESPACE}::QtProtobuf) set_target_properties(${TARGET} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/QtProtobuf" RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/QtProtobuf" RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_CURRENT_BINARY_DIR}/QtProtobuf" RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_BINARY_DIR}/QtProtobuf") target_compile_definitions(${TARGET} PRIVATE SERIALIZATION_LIB) configure_file("${CMAKE_CURRENT_SOURCE_DIR}/serializeinfo.json" "${CMAKE_CURRENT_BINARY_DIR}/QtProtobuf/serializeinfo.json" COPYONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/QtProtobuf/serializeinfo.json" DESTINATION "${TARGET_CMAKE_DIR}") install(TARGETS ${TARGET} PUBLIC_HEADER DESTINATION "${TARGET_INCLUDE_DIR}" RUNTIME DESTINATION "${TARGET_IMPORTS_DIR}" LIBRARY DESTINATION "${TARGET_IMPORTS_DIR}")