#cmake version
cmake_minimum_required ( VERSION 3.10 )

set(CMAKE_CONFIGURATION_TYPES Release)

if(MSVC)
    add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>")
    add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /UMBCS /D_UNICODE /DUNICODE")
endif()

project ( protobuf_cmakelists CXX C)

#reset output path
set ( EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin )
set ( LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin )

set ( CMAKE_SHARED_LIBRARY_LINK_C_FLAGS )

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_INCLUDE_CURRENT_DIR ON)

#当前工程目录要改
set(CMAKE_SPACEX_PATH "C:/Users/zengrixuan/Desktop/protobuf_cmakelists")
message (STATUS "current project dir is ${CMAKE_SPACEX_PATH}")

#very important, for find package

#自己电脑的QTmsvc编译器目录要改
set(CMAKE_PREFIX_PATH "F:/QT/QT6.2.4/6.2.4/msvc2019_64;${CMAKE_SPACEX_PATH}/thirdparty/libprotobuf")

#find_package(Qt6 COMPONENTS Widgets Core Network Gui Qml Quick PrintSupport Mqtt Charts REQUIRED)

find_package(Qt6 COMPONENTS Widgets Core Gui REQUIRED)
find_package(protobuf CONFIG REQUIRED)

#set include file
include_directories (${QT_USE_FILE})
include_directories ( ${CMAKE_SPACEX_PATH}/spec/protobuf/inc)
include_directories ( ${CMAKE_SPACEX_PATH}/thirdparty/libprotobuf/include)
#include_directories ( ${CMAKE_PREFIX_PATH}/include/QtCore)
#include_directories ( F:/QT/QT6.2.4/6.2.4/msvc2019_64/include/QtCore)


#set source file
aux_source_directory ( ${CMAKE_SPACEX_PATH} DIR_USR_SOURCE )
aux_source_directory ( ${CMAKE_SPACEX_PATH}/spec/protobuf/src DIR_USR_SOURCE )





#set debug
if(CMAKE_BUILD_TYPE STREQUAL Debug)
        add_definitions (
                -DPRINT_DEBUG_INFO
        )
endif()

MESSAGE( STATUS "There are source files : ${DIR_USR_SOURCE}.")

#generate target
add_executable ( ${CMAKE_PROJECT_NAME} ${DIR_USR_SOURCE} )

target_link_libraries ( ${CMAKE_PROJECT_NAME} PRIVATE  protobuf::libprotobuf Qt::Widgets Qt::Core  Qt::Gui )


#add custom
add_custom_target ( clean-all COMMAND rm -rf {CMAKE_BINARY_DIR}/* )