# Config file for the QtPropertyBrowser package
# This adds QtPropertyBrowser IMPORTED target
#
# Usage example:
# 
#   find_package(QtPropertyBrowser)
#   add_executable(foo foo.cpp)
#   target_link_libraries(foo QtPropertyBrowser)
#
# Additionaly you can use the following varaibles:
#
#  QtPropertyBrowser_FOUND   	    - standard CMake Package found indicator
#  QtPropertyBrowser_INCLUDE_DIR  - include directories for QtPropertyBrowser alone
#  QtPropertyBrowser_INCLUDE_DIRS - include directories for QtPropertyBrowser with all dpendencies
#  QtPropertyBrowser_DEFINITIONS  - Definitions needed to build with QtPropertyBrowser
#  QtPropertyBrowser_LIBRARIES    - Libraries needed to build with QtPropertyBrowser


include(CMakeFindDependencyMacro)
find_dependency(Qt5Widgets)

# Our library dependencies (contains definitions for IMPORTED targets)
if(NOT TARGET QtPropertyBrowser)
  include("${CMAKE_CURRENT_LIST_DIR}/QtPropertyBrowserTargets.cmake")
endif()

# @PACKAGE_INIT@

# check_required_components(QtPropertyBrowser)

