From dd68d9537370f7fadaa8252bbfaf6c3ee35c4adf Mon Sep 17 00:00:00 2001 From: drelaptop Date: Mon, 26 Nov 2018 14:50:57 +0800 Subject: [PATCH 1/3] fix iOS xcode property setting failed --- cmake/Modules/CocosBuildHelpers.cmake | 48 ++++++++++++++++++--------- cmake/Modules/CocosBuildSet.cmake | 4 +++ 2 files changed, 37 insertions(+), 15 deletions(-) diff --git a/cmake/Modules/CocosBuildHelpers.cmake b/cmake/Modules/CocosBuildHelpers.cmake index 821fe29c56d8..949605bc7eca 100644 --- a/cmake/Modules/CocosBuildHelpers.cmake +++ b/cmake/Modules/CocosBuildHelpers.cmake @@ -45,12 +45,37 @@ function(cocos_mark_multi_resources res_out) set(${res_out} ${tmp_file_list} PARENT_SCOPE) endfunction() +# get all linked libraries including transitive ones, recursive +function(search_depend_libs_recursive cocos_target all_depends_out) + set(all_depends_inner) + set(targets_prepare_search ${cocos_target}) + while(true) + foreach(tmp_target ${targets_prepare_search}) + get_target_property(tmp_depend_libs ${tmp_target} LINK_LIBRARIES) + list(REMOVE_ITEM targets_prepare_search ${tmp_target}) + list(APPEND tmp_depend_libs ${tmp_target}) + foreach(depend_lib ${tmp_depend_libs}) + if(TARGET ${depend_lib}) + list(APPEND all_depends_inner ${depend_lib}) + if(NOT (depend_lib STREQUAL tmp_target)) + list(APPEND targets_prepare_search ${depend_lib}) + endif() + endif() + endforeach() + endforeach() + list(LENGTH targets_prepare_search targets_prepare_search_size) + if(targets_prepare_search_size LESS 1) + break() + endif() + endwhile(true) + set(${all_depends_out} ${all_depends_inner} PARENT_SCOPE) +endfunction() + # get `cocos_target` depend all dlls, save the result in `all_depend_dlls_out` function(get_target_depends_ext_dlls cocos_target all_depend_dlls_out) set(all_depend_ext_dlls) set(targets_prepare_search ${cocos_target}) # targets_prepare_search, target need find ext libs - set(have_searched_targets) set(need_search_targets) while(true) foreach(tmp_target ${targets_prepare_search}) @@ -231,26 +256,19 @@ macro(cocos_pak_xcode cocos_target) set(MACOSX_BUNDLE_LONG_VERSION_STRING ${COCOS_APP_LONG_VERSION_STRING}) set(MACOSX_BUNDLE_SHORT_VERSION_STRING ${COCOS_APP_SHORT_VERSION_STRING}) - message("cocos package: ${cocos_target}, plist file: ${COCOS_APP_INFO_PLIST}") + message(STATUS "cocos package: ${cocos_target}, plist file: ${COCOS_APP_INFO_PLIST}") cocos_config_app_xcode_property(${cocos_target}) endmacro() # set Xcode property for application, include all depend target macro(cocos_config_app_xcode_property cocos_app) - cocos_config_target_xcode_property(${cocos_app}) - # for example, cocos_target: cpp-tests link engine_lib: cocos2d - get_target_property(engine_libs ${cocos_app} LINK_LIBRARIES) - foreach(engine_lib ${engine_libs}) - if(TARGET ${engine_lib}) - cocos_config_target_xcode_property(${engine_lib}) - # for example, engine_lib: cocos2d link external_lib: flatbuffers - get_target_property(external_libs ${engine_lib} LINK_LIBRARIES) - foreach(external_lib ${external_libs}) - if(TARGET ${external_lib}) - cocos_config_target_xcode_property(${external_lib}) - endif() - endforeach() + set(depend_libs) + search_depend_libs_recursive(${cocos_app} depend_libs) + message(STATUS "depend_libs: ${depend_libs}") + foreach(depend_lib ${depend_libs}) + if(TARGET ${depend_lib}) + cocos_config_target_xcode_property(${depend_lib}) endif() endforeach() endmacro() diff --git a/cmake/Modules/CocosBuildSet.cmake b/cmake/Modules/CocosBuildSet.cmake index f125f4ccbab1..f93621238af9 100644 --- a/cmake/Modules/CocosBuildSet.cmake +++ b/cmake/Modules/CocosBuildSet.cmake @@ -10,6 +10,10 @@ set(CMAKE_DEBUG_TARGET_PROPERTIES # some useful variables for every one cocos project set(ENGINE_BINARY_PATH ${PROJECT_BINARY_DIR}/engine) +if(CMAKE_TOOLCHAIN_FILE) + message(STATUS "using toolchain file:" ${CMAKE_TOOLCHAIN_FILE}) +endif() + message(STATUS "PROJECT_NAME:" ${PROJECT_NAME}) message(STATUS "PROJECT_SOURCE_DIR:" ${PROJECT_SOURCE_DIR}) message(STATUS "COCOS2DX_ROOT_PATH:" ${COCOS2DX_ROOT_PATH}) From b16794bcc59ebc03f7fe2c572e49f11ef5aa4ce3 Mon Sep 17 00:00:00 2001 From: drelaptop Date: Mon, 26 Nov 2018 17:57:57 +0800 Subject: [PATCH 2/3] use search_depend_libs_recursive at dlls collect --- cmake/Modules/CocosBuildHelpers.cmake | 36 ++++++++------------------- 1 file changed, 10 insertions(+), 26 deletions(-) diff --git a/cmake/Modules/CocosBuildHelpers.cmake b/cmake/Modules/CocosBuildHelpers.cmake index 949605bc7eca..36f3f2a57cb2 100644 --- a/cmake/Modules/CocosBuildHelpers.cmake +++ b/cmake/Modules/CocosBuildHelpers.cmake @@ -73,33 +73,18 @@ endfunction() # get `cocos_target` depend all dlls, save the result in `all_depend_dlls_out` function(get_target_depends_ext_dlls cocos_target all_depend_dlls_out) + + set(depend_libs) set(all_depend_ext_dlls) - set(targets_prepare_search ${cocos_target}) - # targets_prepare_search, target need find ext libs - set(need_search_targets) - while(true) - foreach(tmp_target ${targets_prepare_search}) - get_target_property(tmp_depend_libs ${tmp_target} LINK_LIBRARIES) - list(REMOVE_ITEM targets_prepare_search ${tmp_target}) - # target itself use_cocos_pkg - list(APPEND tmp_depend_libs ${tmp_target}) - foreach(depend_lib ${tmp_depend_libs}) - if(TARGET ${depend_lib}) - get_target_property(tmp_dlls ${depend_lib} CC_DEPEND_DLLS) - if(tmp_dlls) - list(APPEND all_depend_ext_dlls ${tmp_dlls}) - endif() - if(NOT (depend_lib STREQUAL tmp_target)) - list(APPEND targets_prepare_search ${depend_lib}) - endif() - endif() - endforeach() - endforeach() - list(LENGTH targets_prepare_search targets_prepare_search_size) - if(targets_prepare_search_size LESS 1) - break() + search_depend_libs_recursive(${cocos_app} depend_libs) + foreach(depend_lib ${depend_libs}) + if(TARGET ${depend_lib}) + get_target_property(tmp_dlls ${depend_lib} CC_DEPEND_DLLS) + if(tmp_dlls) + list(APPEND all_depend_ext_dlls ${tmp_dlls}) + endif() endif() - endwhile(true) + endforeach() set(${all_depend_dlls_out} ${all_depend_ext_dlls} PARENT_SCOPE) endfunction() @@ -265,7 +250,6 @@ endmacro() macro(cocos_config_app_xcode_property cocos_app) set(depend_libs) search_depend_libs_recursive(${cocos_app} depend_libs) - message(STATUS "depend_libs: ${depend_libs}") foreach(depend_lib ${depend_libs}) if(TARGET ${depend_lib}) cocos_config_target_xcode_property(${depend_lib}) From 72c0a5f1f2eea8027b51b2184fc02a94a431185a Mon Sep 17 00:00:00 2001 From: leda Date: Mon, 26 Nov 2018 18:40:08 +0800 Subject: [PATCH 3/3] fix typo --- cmake/Modules/CocosBuildHelpers.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Modules/CocosBuildHelpers.cmake b/cmake/Modules/CocosBuildHelpers.cmake index 36f3f2a57cb2..389648d38fd1 100644 --- a/cmake/Modules/CocosBuildHelpers.cmake +++ b/cmake/Modules/CocosBuildHelpers.cmake @@ -76,7 +76,7 @@ function(get_target_depends_ext_dlls cocos_target all_depend_dlls_out) set(depend_libs) set(all_depend_ext_dlls) - search_depend_libs_recursive(${cocos_app} depend_libs) + search_depend_libs_recursive(${cocos_target} depend_libs) foreach(depend_lib ${depend_libs}) if(TARGET ${depend_lib}) get_target_property(tmp_dlls ${depend_lib} CC_DEPEND_DLLS)