@@ -9,11 +9,13 @@ set(GENERATED_MIRROR_INFO_SRC_DIR ${GENERATED_DIR}/MirrorInfoSrc CACHE PATH "" F
99set (BASE_TARGETS_FOLDER "${SUB_PROJECT_NAME} " CACHE STRING "" FORCE )
1010set (AUX_TARGETS_FOLDER "${BASE_TARGETS_FOLDER} /Aux" CACHE STRING "" FORCE )
1111
12+ get_cmake_property (with_multi_config_generator GENERATOR_IS_MULTI_CONFIG )
13+
1214if (${BUILD_TEST} )
1315 enable_testing ()
14- add_definitions ( -DBUILD_TEST =1 )
16+ add_compile_definitions ( BUILD_TEST =1 )
1517else ()
16- add_definitions ( -DBUILD_TEST =0 )
18+ add_compile_definitions ( BUILD_TEST =0 )
1719endif ()
1820
1921if ("${SUB_PROJECT_NAME} " STREQUAL "" )
@@ -107,7 +109,7 @@ function(exp_process_runtime_dependencies)
107109 endif ()
108110 if (NOT ${arg_NOT_INSTALL} AND NOT "${runtime_deps} " STREQUAL "" )
109111 install (
110- FILES ${runtime_deps} DESTINATION ${CMAKE_INSTALL_PREFIX} / ${ SUB_PROJECT_NAME} /Binaries
112+ FILES ${runtime_deps} DESTINATION ${SUB_PROJECT_NAME} /Binaries
111113 )
112114 endif ()
113115endfunction ()
@@ -141,8 +143,8 @@ function(exp_add_resources_copy_command)
141143
142144 list (APPEND copy_commands COMMAND ${CMAKE_COMMAND} -E copy_if_different ${src} $<TARGET_FILE_DIR :${arg_NAME} >/${dst} )
143145
144- get_filename_component ( absolute_dst ${CMAKE_INSTALL_PREFIX} /${ SUB_PROJECT_NAME}/Binaries/${dst} ABSOLUTE )
145- get_filename_component ( dst_dir ${absolute_dst} DIRECTORY )
146+ cmake_path ( SET dst_path NORMALIZE " ${ SUB_PROJECT_NAME} /Binaries/${dst} " )
147+ cmake_path ( GET dst_path PARENT_PATH dst_dir )
146148 if (NOT ${arg_NOT_INSTALL} )
147149 install (FILES ${src} DESTINATION ${dst_dir} )
148150 endif ()
@@ -166,6 +168,7 @@ function(exp_gather_target_libs)
166168 string (REGEX MATCH "\\ $\\ <BUILD_INTERFACE.+\\ >" match ${arg_NAME} )
167169 if (match)
168170 set (${arg_OUTPUT} "" PARENT_SCOPE )
171+ return ()
169172 endif ()
170173
171174 get_target_property (target_libs ${arg_NAME} LINK_LIBRARIES )
@@ -309,8 +312,7 @@ function(exp_add_executable)
309312 set_target_properties(${arg_NAME} PROPERTIES FOLDER ${BASE_TARGETS_FOLDER} )
310313 endif ()
311314
312- get_cmake_property(generated_is_multi_config GENERATOR_IS_MULTI_CONFIG)
313- if (${generated_is_multi_config} )
315+ if (${with_multi_config_generator} )
314316 set(runtime_output_dir ${CMAKE_BINARY_DIR} /Dist/$<CONFIG >/${SUB_PROJECT_NAME} /Binaries)
315317 else ()
316318 set(runtime_output_dir ${CMAKE_BINARY_DIR} /Dist/${SUB_PROJECT_NAME} /Binaries)
@@ -411,8 +413,7 @@ function(exp_add_library)
411413 ${arg_NAME}
412414 PRIVATE ${arg_SRC} ${generated_src}
413415 )
414- get_cmake_property(generator_is_multi_config GENERATOR_IS_MULTI_CONFIG)
415- if (${generator_is_multi_config} )
416+ if (${with_multi_config_generator} )
416417 set(runtime_output_dir ${CMAKE_BINARY_DIR} /Targets/${SUB_PROJECT_NAME} /${arg_NAME} /$<CONFIG >/Binaries)
417418 set(library_output_dir ${CMAKE_BINARY_DIR} /Targets/${SUB_PROJECT_NAME} /${arg_NAME} /$<CONFIG >/Binaries)
418419 set(archive_output_directory ${CMAKE_BINARY_DIR} /Targets/${SUB_PROJECT_NAME} /${arg_NAME} /$<CONFIG >/Lib)
@@ -504,65 +505,17 @@ function(exp_add_test)
504505 set(multiValueArgs SRC INC LINK LIB DEP_TARGET RES REFLECT)
505506 cmake_parse_arguments(arg " ${options} " " ${singleValueArgs} " " ${multiValueArgs} " ${ARGN} )
506507
507- if (DEFINED arg_REFLECT)
508- exp_add_mirror_info_source_generation_target(
509- NAME ${arg_NAME}
510- OUTPUT_SRC generated_src
511- OUTPUT_TARGET_NAME generated_target
512- SEARCH_DIR ${arg_REFLECT}
513- PRIVATE_INC ${arg_INC}
514- LIB ${arg_LIB}
515- )
516- endif()
517-
518- add_executable(${arg_NAME} )
519- set_target_properties(${arg_NAME} PROPERTIES FOLDER ${BASE_TARGETS_FOLDER} )
520-
521- target_sources(
522- ${arg_NAME}
523- PRIVATE ${arg_SRC} ${generated_src}
524- )
525- get_cmake_property(generator_is_multi_config GENERATOR_IS_MULTI_CONFIG)
526- if (${generator_is_multi_config} )
527- set_target_properties(
528- ${arg_NAME} PROPERTIES
529- RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /Dist/$<CONFIG >/${SUB_PROJECT_NAME} /Binaries
530- )
531- else ()
532- set_target_properties(
533- ${arg_NAME} PROPERTIES
534- RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /Dist/${SUB_PROJECT_NAME} /Binaries
535- )
536- endif ()
537-
538- target_include_directories(
539- ${arg_NAME}
540- PRIVATE ${arg_INC}
541- )
542- target_link_directories(
543- ${arg_NAME}
544- PRIVATE ${arg_LINK}
545- )
546- target_link_libraries(
547- ${arg_NAME}
548- PRIVATE Test ${arg_LIB}
549- )
550- exp_process_runtime_dependencies(
508+ exp_add_executable(
551509 NAME ${arg_NAME}
510+ SRC ${arg_SRC}
511+ INC ${arg_INC}
512+ LINK ${arg_LINK}
513+ LIB Test ${arg_LIB}
552514 DEP_TARGET ${arg_DEP_TARGET}
553- NOT_INSTALL
554- )
555- exp_add_resources_copy_command(
556- NAME ${arg_NAME}
557515 RES ${arg_RES}
516+ REFLECT ${arg_REFLECT}
558517 NOT_INSTALL
559518 )
560- if (DEFINED arg_DEP_TARGET)
561- add_dependencies(${arg_NAME} ${arg_DEP_TARGET} )
562- endif()
563- if (DEFINED arg_REFLECT)
564- add_dependencies(${arg_NAME} ${generated_target} )
565- endif()
566519
567520 add_test(
568521 NAME ${arg_NAME}
0 commit comments