11# Author: Younguk Kim (bluekyu)
2- # Date : 2016-08-02
2+ # Date : 2017-05-12
33
44cmake_minimum_required (VERSION 3.6)
5- project (bloom)
5+
6+ get_filename_component (RPPLUGIN_ID ${CMAKE_CURRENT_LIST_DIR} NAME )
7+ project (${RPPLUGIN_ID} )
68
79# === configure ====================================================================================
810set_property (GLOBAL PROPERTY USE_FOLDERS ON ) # Project Grouping
911
12+ set (RPPLUGIN_INSTALL_DIR "share/render_pipeline/rpplugins/${RPPLUGIN_ID} " )
13+
14+ set (PROJECT_VERSION_MAJOR "0" )
15+ set (PROJECT_VERSION_MINOR "1" )
16+ set (PROJECT_VERSION_PATCH "0" )
17+ set (PROJECT_VERSION "${PROJECT_VERSION_MAJOR} .${PROJECT_VERSION_MINOR} .${PROJECT_VERSION_PATCH} " )
18+
1019# === plugin specific packages ===
11- # ================================
12-
13- # platform specific configure
14- if (${CMAKE_SYSTEM_NAME} MATCHES "Linux" )
15- # build type
16- if (NOT CMAKE_BUILD_TYPE )
17- set (CMAKE_BUILD_TYPE "Release" CACHE STRING
18- "Choose the type of build, options are: None Debug RelWithDebInfo Release."
19- FORCE)
20- endif ()
21- message ("${PROJECT_NAME} Build Type: ${CMAKE_BUILD_TYPE} " )
22- endif ()
20+ # ==================================================================================================
2321
24- # set input files
22+ # === target =======================================================================================
2523set (plugin_sources
26- "${PROJECT_SOURCE_DIR} /src/plugin.hpp"
2724 "${PROJECT_SOURCE_DIR} /src/plugin.cpp"
25+ "${PROJECT_SOURCE_DIR} /src/plugin.hpp"
26+ "${PROJECT_SOURCE_DIR} /src/bloom_stage.cpp"
2827 "${PROJECT_SOURCE_DIR} /src/bloom_stage.hpp"
29- "${PROJECT_SOURCE_DIR} /src/bloom_stage.cpp" )
30- # ==================================================================================================
31-
32- # === target =======================================================================================
28+ )
3329add_library (${PROJECT_NAME} MODULE ${plugin_sources} )
3430
3531target_compile_features (${PROJECT_NAME} PRIVATE cxx_auto_type)
@@ -40,17 +36,61 @@ else()
4036endif ()
4137
4238target_compile_definitions (${PROJECT_NAME}
43- PRIVATE RPCPP_PLUGIN_ID_STRING="${PROJECT_NAME } "
39+ PRIVATE RPCPP_PLUGIN_ID_STRING="${RPPLUGIN_ID } "
4440)
4541
4642target_include_directories (${PROJECT_NAME}
47- PRIVATE "${PROJECT_SOURCE_DIR} /include" "${PROJECT_BINARY_DIR} "
48- "${CMAKE_CURRENT_SOURCE_DIR} /src"
43+ PRIVATE "${PROJECT_SOURCE_DIR} /include" "${PROJECT_BINARY_DIR} " "${PROJECT_SOURCE_DIR} /src"
4944)
5045
5146target_link_libraries (${PROJECT_NAME}
5247 PRIVATE render_pipeline
5348)
5449
50+ set_target_properties (${PROJECT_NAME} PROPERTIES
51+ FOLDER "render_pipeline/rpplugins"
52+ OUTPUT_NAME "plugin"
53+ )
54+
55+ # create plugin interface target
56+ set (RPPLUGIN_INTERFACE_TARGET ${RPPLUGIN_ID} _interface)
57+ add_library (${RPPLUGIN_INTERFACE_TARGET} INTERFACE )
58+
59+ target_include_directories (${RPPLUGIN_INTERFACE_TARGET}
60+ INTERFACE $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR} /include >
61+ $<INSTALL_INTERFACE:${RPPLUGIN_INSTALL_DIR} /include >
62+ )
63+
64+ target_link_libraries (${RPPLUGIN_INTERFACE_TARGET}
65+ INTERFACE render_pipeline
66+ )
67+
68+ # configure package
69+ set (PACKAGE_NAME "rpplugin_${RPPLUGIN_ID} " )
70+ set (TARGET_NAMESPACE "rpplugin::" )
71+ set (PACKAGE_VERSION_CONFIG_FILE "${PROJECT_BINARY_DIR} /${PACKAGE_NAME} -config-version.cmake" )
72+ set (PACKAGE_CONFIG_FILE "${PROJECT_BINARY_DIR} /${PACKAGE_NAME} -config.cmake" )
73+ set (TARGET_EXPORT_NAME "${PACKAGE_NAME} -targets" )
74+ set (PACKAGE_CMAKE_INSTALL_DIR "${RPPLUGIN_INSTALL_DIR} /cmake" )
75+
76+ include (CMakePackageConfigHelpers)
77+ write_basic_package_version_file(${PACKAGE_VERSION_CONFIG_FILE}
78+ VERSION ${PROJECT_VERSION}
79+ COMPATIBILITY SameMajorVersion
80+ )
81+ configure_package_config_file(${RPPLUGIN_CONFIG_IN_FILE}
82+ ${PACKAGE_CONFIG_FILE}
83+ INSTALL_DESTINATION ${PACKAGE_CMAKE_INSTALL_DIR}
84+ )
85+
86+ add_library (${TARGET_NAMESPACE}${PROJECT_NAME} ALIAS ${RPPLUGIN_INTERFACE_TARGET} )
87+ export (TARGETS ${RPPLUGIN_INTERFACE_TARGET}
88+ NAMESPACE ${TARGET_NAMESPACE}
89+ FILE "${PROJECT_BINARY_DIR} /${TARGET_EXPORT_NAME} .cmake"
90+ )
91+ export (PACKAGE ${PACKAGE_NAME} )
92+ # ==================================================================================================
93+
94+ # === install ======================================================================================
5595include (plugin_install)
5696# ==================================================================================================
0 commit comments