11include_guard (GLOBAL )
22
3+ function (make_outdir_path OUTVAR IP_LIB )
4+ alias_dereference (_reallib ${IP_LIB} )
5+ string (REPLACE "__" "/" outpath "${_reallib} " )
6+
7+ set (${OUTVAR} ${outpath} PARENT_SCOPE )
8+ endfunction ()
9+
310function (ip_install IP_LIB )
411 cmake_parse_arguments (ARG "" "" "" ${ARGN} )
512 if (ARG_UNPARSED_ARGUMENTS)
613 message (FATAL_ERROR "${CMAKE_CURRENT_FUNCTION} passed unrecognized argument " "${ARG_UNPARSED_ARGUMENTS} " )
714 endif ()
815
916
17+ set_property (TARGET ${IP_LIB} APPEND PROPERTY EXPORT_PROPERTIES FILE_SETS )
1018 get_property (export_sources TARGET ${IP_LIB} PROPERTY EXPORT_PROPERTIES )
11- message ( "export_source: ${export_sources} " )
19+ get_property ( filesets TARGET ${IP_LIB} PROPERTY FILE_SETS )
1220 # list(FILTER export_sources INCLUDE REGEX "(_SOURCES|_HEADERS|_INCLUDE_DIRECTORIES)$")
1321
22+ make_outdir_path (OUTDIR ${IP_LIB} )
23+
1424 set (sources_list ${export_sources} )
1525 list (FILTER sources_list INCLUDE REGEX "_SOURCES$" )
1626
@@ -20,34 +30,38 @@ function(ip_install IP_LIB)
2030 set (inc_dirs_list ${export_sources} )
2131 list (FILTER inc_dirs_list INCLUDE REGEX "_INCLUDE_DIRECTORIES$" )
2232
23- foreach (fileset ${sources_list} )
24- string (REGEX REPLACE "_SOURCES$" "" fileset ${fileset} )
33+ foreach (fileset ${filesets} )
34+ string (REPLACE "::" ";" fileset_list "${fileset} " )
35+ list (GET fileset_list 0 fileset_language)
36+ list (GET fileset_list 1 fileset_name)
37+
38+ # string(REGEX REPLACE "_SOURCES$" "" fileset ${fileset})
2539 # message("fileset is: ${fileset}")
26- get_ip_sources (${fileset} ${IP_LIB} ${fileset } )
40+ get_ip_sources (${fileset} ${IP_LIB} ${fileset_language} FILE_SETS ${fileset_name } )
2741
2842 unset (${fileset} _copy)
2943 foreach (source ${${fileset} })
3044 cmake_path (GET source FILENAME filename )
31- list (APPEND ${fileset} _copy "\$ {_IMPORT_PREFIX}/${fileset } /${filename} " )
45+ list (APPEND ${fileset} _copy "\$ {_IMPORT_PREFIX}/${OUTDIR} / ${fileset_language} / ${fileset_name } /${filename} " )
3246 endforeach ()
3347
34- ip_sources (${IP_LIB} ${fileset } REPLACE
48+ ip_sources (${IP_LIB} ${fileset_language} FILE_SET ${fileset_name } REPLACE
3549 ${${fileset}_copy}
3650 )
3751
38-
3952 install (FILES ${${fileset} }
40- DESTINATION ${fileset}
53+ DESTINATION " ${OUTDIR} / ${fileset_language} / ${fileset_name} "
4154 )
42- get_ip_sources (sources ${IP_LIB} ${fileset} )
4355 endforeach ()
4456
4557 get_property (IP_NAME TARGET ${IP_LIB} PROPERTY IP_NAME )
4658 get_property (IP_VERSION TARGET ${IP_LIB} PROPERTY VERSION )
59+ set (VERSION_USED FALSE )
4760 if (NOT IP_VERSION)
4861 set (VERSION 0.0.1)
4962 else ()
5063 set (VERSION ${IP_VERSION} )
64+ set (VERSION_USED TRUE )
5165 endif ()
5266
5367 include (CMakePackageConfigHelpers )
@@ -65,15 +79,16 @@ function(ip_install IP_LIB)
6579 configure_package_config_file (
6680 "${CMAKE_CURRENT_FUNCTION_LIST_DIR} /ipConfig.cmake.in"
6781 "${PROJECT_BINARY_DIR} /${IP_NAME} Config.cmake"
68- INSTALL_DESTINATION lib/cmake/${IP_NAME}
82+ INSTALL_DESTINATION " ${OUTDIR} / lib/cmake/${IP_NAME} "
6983 )
7084
7185 install (EXPORT ${IP_NAME} Targets
72- DESTINATION lib/cmake/${IP_NAME} )
86+ DESTINATION "${OUTDIR} /lib/cmake/${IP_NAME} "
87+ )
7388
7489 install (FILES "${PROJECT_BINARY_DIR} /${IP_NAME} ConfigVersion.cmake"
7590 "${PROJECT_BINARY_DIR} /${IP_NAME} Config.cmake"
76- DESTINATION lib/cmake/${IP_NAME}
91+ DESTINATION " ${OUTDIR} / lib/cmake/${IP_NAME} "
7792 )
7893
7994endfunction ()
0 commit comments