@ -9,6 +9,15 @@ include(cmake/FileUtil.cmake)
set ( CMAKE_INSTALL_MESSAGE NEVER ) # S i m p l i f y m e s s a g e s t o r e d u c e o u t p u t n o i s e
define_property ( TARGET PROPERTY LY_INSTALL_GENERATE_RUN_TARGET
B R I E F _ D O C S " D e f i n e s i f a \ " R U N \ " t a r g e t s s h o u l d b e c r e a t e d w h e n i n s t a l l i n g t h i s t a r g e t G e m "
F U L L _ D O C S [ [
P r o p e r t y w h i c h i s s e t o n t a r g e t s t h a t s h o u l d g e n e r a t e a " R U N "
t a r g e t w h e n i n s t a l l e d . T h i s \ " R U N \ " t a r g e t h e l p s t o r u n t h e
b i n a r y f r o m t h e i n s t a l l e d l o c a t i o n d i r e c t l y f r o m t h e I D E .
] ]
)
ly_set ( CMAKE_INSTALL_DEFAULT_COMPONENT_NAME Core )
cmake_path ( RELATIVE_PATH CMAKE_RUNTIME_OUTPUT_DIRECTORY BASE_DIRECTORY ${ CMAKE_BINARY_DIR } OUTPUT_VARIABLE runtime_output_directory )
@ -105,15 +114,19 @@ function(ly_setup_target OUTPUT_CONFIGURED_TARGET ALIAS_TARGET_NAME absolute_tar
set ( NAMESPACE_PLACEHOLDER "" )
set ( NAME_PLACEHOLDER ${ TARGET_NAME } )
endif ( )
get_target_property ( should_create_helper ${ TARGET_NAME } LY_INSTALL_GENERATE_RUN_TARGET )
if ( should_create_helper )
set ( NAME_PLACEHOLDER ${ NAME_PLACEHOLDER } .Imported )
endif ( )
set ( TARGET_TYPE_PLACEHOLDER "" )
get_target_property ( target_type ${ NAME_PLACEHOLDER } TYPE )
get_target_property ( target_type ${ TARGET_NAME } TYPE )
# R e m o v e t h e _ L I B R A R Y s i n c e w e d o n t n e e d t o p a s s t h a t t o l y _ a d d _ t a r g e t s
string ( REPLACE "_LIBRARY" "" TARGET_TYPE_PLACEHOLDER ${ target_type } )
# F o r H E A D E R _ O N L Y l i b s w e e n d u p g e n e r a t i n g " I N T E R F A C E " l i b r a r i e s , n e e d t o s p e c i f y H E A D E R O N L Y i n s t e a d
string ( REPLACE "INTERFACE" "HEADERONLY" TARGET_TYPE_PLACEHOLDER ${ TARGET_TYPE_PLACEHOLDER } )
if ( TARGET_TYPE_PLACEHOLDER STREQUAL "MODULE" )
get_target_property ( gem_module ${ NAME_PLACEHOLDER } GEM_MODULE )
get_target_property ( gem_module ${ TARGET_NAME } GEM_MODULE )
if ( gem_module )
set ( TARGET_TYPE_PLACEHOLDER "GEM_MODULE" )
endif ( )
@ -146,7 +159,6 @@ function(ly_setup_target OUTPUT_CONFIGURED_TARGET ALIAS_TARGET_NAME absolute_tar
unset ( RUNTIME_DEPENDENCIES_PLACEHOLDER )
endif ( )
get_target_property ( inteface_build_dependencies_props ${ TARGET_NAME } INTERFACE_LINK_LIBRARIES )
unset ( INTERFACE_BUILD_DEPENDENCIES_PLACEHOLDER )
if ( inteface_build_dependencies_props )
@ -170,6 +182,23 @@ function(ly_setup_target OUTPUT_CONFIGURED_TARGET ALIAS_TARGET_NAME absolute_tar
list ( REMOVE_DUPLICATES INTERFACE_BUILD_DEPENDENCIES_PLACEHOLDER )
string ( REPLACE ";" "\n" INTERFACE_BUILD_DEPENDENCIES_PLACEHOLDER "${INTERFACE_BUILD_DEPENDENCIES_PLACEHOLDER}" )
# I f t h e t a r g e t i s a n e x e c u t a b l e / a p p l i c a t i o n , a d d a c u s t o m t a r g e t s o w e c a n d e b u g t h e t a r g e t i n p r o j e c t - c e n t r i c w o r k f l o w
if ( should_create_helper )
string ( REPLACE ".Imported" "" RUN_TARGET_NAME ${ NAME_PLACEHOLDER } )
set ( target_types_with_debugging_helper EXECUTABLE APPLICATION )
if ( NOT target_type IN_LIST target_types_with_debugging_helper )
message ( FATAL_ERROR "Cannot generate a RUN target for ${TARGET_NAME}, type is ${target_type}" )
endif ( )
set ( TARGET_RUN_HELPER
" add_custom_target ( ${ RUN_TARGET_NAME } )
set_target_properties ( ${ RUN_TARGET_NAME } PROPERTIES
F O L D E R \ " C M a k e P r e d e f i n e d T a r g e t s / S D K \ "
V S _ D E B U G G E R _ C O M M A N D \ $ < G E N E X _ E V A L : \ $ < T A R G E T _ P R O P E R T Y : $ { N A M E _ P L A C E H O L D E R } , I M P O R T E D _ L O C A T I O N > >
V S _ D E B U G G E R _ C O M M A N D _ A R G U M E N T S \ " - - p r o j e c t - p a t h = \ $ { L Y _ D E F A U L T _ P R O J E C T _ P A T H } \ "
) "
)
endif ( )
# C o n f i g f i l e
set ( target_file_contents "# Generated by O3DE install\n\n" )
if ( NOT target_type STREQUAL INTERFACE_LIBRARY )
@ -182,13 +211,13 @@ function(ly_setup_target OUTPUT_CONFIGURED_TARGET ALIAS_TARGET_NAME absolute_tar
set ( target_location "\${LY_ROOT_FOLDER}/${library_output_directory}/${PAL_PLATFORM_NAME}/$<CONFIG>/${target_library_output_subdirectory}/$<TARGET_FILE_NAME:${TARGET_NAME}>" )
elseif ( target_type STREQUAL SHARED_LIBRARY )
string ( APPEND target_file_contents
" set_property ( TARGET ${ TARGET_NAME }
" set_property ( TARGET ${ NAME_PLACEHOLDER }
A P P E N D _ S T R I N G P R O P E R T Y I M P O R T E D _ I M P L I B
$ < $ < C O N F I G : $ < C O N F I G > $ < A N G L E - R > : \ " \ $ { L Y _ R O O T _ F O L D E R } / $ { a r c h i v e _ o u t p u t _ d i r e c t o r y } / $ { P A L _ P L A T F O R M _ N A M E } / $ < C O N F I G > / $ < T A R G E T _ L I N K E R _ F I L E _ N A M E : $ { T A R G E T _ N A M E } > \ " $ < A N G L E - R >
)
" )
string ( APPEND target_file_contents
" set_property ( TARGET ${ TARGET_NAME }
" set_property ( TARGET ${ NAME_PLACEHOLDER }
P R O P E R T Y I M P O R T E D _ I M P L I B _ $ < U P P E R _ C A S E : $ < C O N F I G > >
\ " \ $ { L Y _ R O O T _ F O L D E R } / $ { a r c h i v e _ o u t p u t _ d i r e c t o r y } / $ { P A L _ P L A T F O R M _ N A M E } / $ < C O N F I G > / $ < T A R G E T _ L I N K E R _ F I L E _ N A M E : $ { T A R G E T _ N A M E } > \ "
)
@ -200,11 +229,11 @@ function(ly_setup_target OUTPUT_CONFIGURED_TARGET ALIAS_TARGET_NAME absolute_tar
if ( target_location )
string ( APPEND target_file_contents
" set_property ( TARGET ${ TARGET_NAME }
" set_property ( TARGET ${ NAME_PLACEHOLDER }
A P P E N D _ S T R I N G P R O P E R T Y I M P O R T E D _ L O C A T I O N
$ < $ < C O N F I G : $ < C O N F I G > $ < A N G L E - R > : $ { t a r g e t _ l o c a t i o n } $ < A N G L E - R >
)
set_property ( TARGET ${ TARGET_NAME }
set_property ( TARGET ${ NAME_PLACEHOLDER }
P R O P E R T Y I M P O R T E D _ L O C A T I O N _ $ < U P P E R _ C A S E : $ < C O N F I G > >
$ { t a r g e t _ l o c a t i o n }
)