diff --git a/cmake/cef_macros.cmake.in b/cmake/cef_macros.cmake.in index 12cd79229..d6b853a82 100644 --- a/cmake/cef_macros.cmake.in +++ b/cmake/cef_macros.cmake.in @@ -185,26 +185,20 @@ endif(OS_LINUX) if(OS_MACOSX) -# Fix the framework link in the helper executable. -macro(FIX_MACOSX_HELPER_FRAMEWORK_LINK target app_path) - add_custom_command(TARGET ${target} - POST_BUILD - COMMAND install_name_tool -change "@executable_path/Chromium Embedded Framework" - "@executable_path/../../../../Frameworks/Chromium Embedded Framework.framework/Chromium Embedded Framework" - "${app_path}/Contents/MacOS/${target}" - VERBATIM - ) +# Fix the framework rpath in the helper executable. +macro(FIX_MACOSX_HELPER_FRAMEWORK_RPATH target) + # The helper is in $app_name.app/Contents/Frameworks/$app_name Helper.app/Contents/MacOS/ + # so set rpath up to Contents/ so that the loader can find Frameworks/. + set_target_properties(${target} PROPERTIES INSTALL_RPATH "@executable_path/../../../..") + set_target_properties(${target} PROPERTIES BUILD_WITH_INSTALL_RPATH TRUE) endmacro() -# Fix the framework link in the main executable. -macro(FIX_MACOSX_MAIN_FRAMEWORK_LINK target app_path) - add_custom_command(TARGET ${target} - POST_BUILD - COMMAND install_name_tool -change "@executable_path/Chromium Embedded Framework" - "@executable_path/../Frameworks/Chromium Embedded Framework.framework/Chromium Embedded Framework" - "${app_path}/Contents/MacOS/${target}" - VERBATIM - ) +# Fix the framework rpath in the main executable. +macro(FIX_MACOSX_MAIN_FRAMEWORK_RPATH target) + # The main app is at $app_name.app/Contents/MacOS/$app_name + # so set rpath up to Contents/ so that the loader can find Frameworks/. + set_target_properties(${target} PROPERTIES INSTALL_RPATH "@executable_path/..") + set_target_properties(${target} PROPERTIES BUILD_WITH_INSTALL_RPATH TRUE) endmacro() # Manually process and copy over resource files. diff --git a/tests/cefclient/CMakeLists.txt.in b/tests/cefclient/CMakeLists.txt.in index d45c4ad00..e0a84d4af 100644 --- a/tests/cefclient/CMakeLists.txt.in +++ b/tests/cefclient/CMakeLists.txt.in @@ -178,8 +178,8 @@ if(OS_MACOSX) MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/resources/mac/helper-Info.plist ) - # Fix the framework link in the helper executable. - FIX_MACOSX_HELPER_FRAMEWORK_LINK(${CEF_HELPER_TARGET} ${CEF_HELPER_APP}) + # Fix the framework rpath in the helper executable. + FIX_MACOSX_HELPER_FRAMEWORK_RPATH(${CEF_HELPER_TARGET}) # Main executable target. add_executable(${CEF_TARGET} MACOSX_BUNDLE ${CEFCLIENT_RESOURCES_SRCS} ${CEFCLIENT_SRCS}) @@ -206,8 +206,8 @@ if(OS_MACOSX) VERBATIM ) - # Fix the framework link in the main executable. - FIX_MACOSX_MAIN_FRAMEWORK_LINK(${CEF_TARGET} ${CEF_APP}) + # Fix the framework rpath in the main executable. + FIX_MACOSX_MAIN_FRAMEWORK_RPATH(${CEF_TARGET}) if(NOT ${CMAKE_GENERATOR} STREQUAL "Xcode") # Manually process and copy over resource files. diff --git a/tests/cefsimple/CMakeLists.txt.in b/tests/cefsimple/CMakeLists.txt.in index faf8d4677..0f7b97147 100644 --- a/tests/cefsimple/CMakeLists.txt.in +++ b/tests/cefsimple/CMakeLists.txt.in @@ -99,8 +99,8 @@ if(OS_MACOSX) MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/mac/helper-Info.plist ) - # Fix the framework link in the helper executable. - FIX_MACOSX_HELPER_FRAMEWORK_LINK(${CEF_HELPER_TARGET} ${CEF_HELPER_APP}) + # Fix the framework rpath in the helper executable. + FIX_MACOSX_HELPER_FRAMEWORK_RPATH(${CEF_HELPER_TARGET}) # Main executable target. add_executable(${CEF_TARGET} MACOSX_BUNDLE ${CEFSIMPLE_RESOURCES_SRCS} ${CEFSIMPLE_SRCS}) @@ -127,8 +127,8 @@ if(OS_MACOSX) VERBATIM ) - # Fix the framework link in the main executable. - FIX_MACOSX_MAIN_FRAMEWORK_LINK(${CEF_TARGET} ${CEF_APP}) + # Fix the framework rpath in the main executable. + FIX_MACOSX_MAIN_FRAMEWORK_RPATH(${CEF_TARGET}) if(NOT ${CMAKE_GENERATOR} STREQUAL "Xcode") # Manually process and copy over resource files.