Allow external CEF folder with CMake build
This commit is contained in:
parent
4ee5b50401
commit
e4c03f6857
4 changed files with 105 additions and 50 deletions
|
|
@ -11,42 +11,72 @@ include(../../source_groups.cmake)
|
|||
|
||||
include(cef_version_info.cmake)
|
||||
|
||||
ExternalProject_Add(
|
||||
cef
|
||||
URL ${CEF_URL}
|
||||
URL_HASH SHA1=${CEF_SHA1}
|
||||
PATCH_COMMAND
|
||||
${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/fixup_cef.cmake
|
||||
CMAKE_ARGS -DUSE_ATL=OFF -DUSE_SANDBOX=OFF
|
||||
BUILD_COMMAND
|
||||
${CMAKE_COMMAND} --build . --target libcef_dll_wrapper --config $<CONFIG>
|
||||
INSTALL_COMMAND ""
|
||||
)
|
||||
find_path(CEF_ROOT
|
||||
NAMES cef_paths.gypi
|
||||
HINTS
|
||||
$ENV{CEF_ROOT}
|
||||
${wxSOURCE_DIR}/3rdparty/cef
|
||||
DOC "CEF Binary Root directory"
|
||||
)
|
||||
|
||||
ExternalProject_Get_property(cef SOURCE_DIR)
|
||||
ExternalProject_Get_property(cef BINARY_DIR)
|
||||
add_library(libcef_dll_wrapper STATIC IMPORTED GLOBAL)
|
||||
get_property(HAVE_MULTI_CONFIG_GENERATOR GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
||||
if(HAVE_MULTI_CONFIG_GENERATOR)
|
||||
set_target_properties(libcef_dll_wrapper PROPERTIES
|
||||
IMPORTED_LOCATION_DEBUG ${BINARY_DIR}/libcef_dll_wrapper/Debug/libcef_dll_wrapper${CMAKE_STATIC_LIBRARY_SUFFIX}
|
||||
IMPORTED_LOCATION_RELEASE ${BINARY_DIR}/libcef_dll_wrapper/Release/libcef_dll_wrapper${CMAKE_STATIC_LIBRARY_SUFFIX}
|
||||
if(NOT CEF_ROOT)
|
||||
message("Downloading CEF binary distribution...")
|
||||
|
||||
set(CEF_DOWNLOAD_DIR ${CMAKE_CURRENT_BINARY_DIR}/cef-download)
|
||||
set(CEF_SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/cef-source)
|
||||
set(CEF_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/cef-build)
|
||||
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/cef_download.cmake.in
|
||||
${CEF_DOWNLOAD_DIR}/CMakeLists.txt
|
||||
)
|
||||
else()
|
||||
set_target_properties(libcef_dll_wrapper PROPERTIES
|
||||
IMPORTED_LOCATION ${BINARY_DIR}/libcef_dll_wrapper/libcef_dll_wrapper${CMAKE_STATIC_LIBRARY_SUFFIX}
|
||||
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
|
||||
RESULT_VARIABLE result
|
||||
WORKING_DIRECTORY ${CEF_DOWNLOAD_DIR}
|
||||
)
|
||||
if(result)
|
||||
message(FATAL_ERROR "CMake step for cef failed: ${result}")
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_COMMAND} --build .
|
||||
RESULT_VARIABLE result
|
||||
WORKING_DIRECTORY ${CEF_DOWNLOAD_DIR}
|
||||
)
|
||||
if(result)
|
||||
message(FATAL_ERROR "Build step for cef failed: ${result}")
|
||||
endif()
|
||||
|
||||
set(CEF_ROOT ${CEF_SOURCE_DIR} CACHE PATH "CEF Binary Root directory" FORCE)
|
||||
endif()
|
||||
add_library(libcef STATIC IMPORTED GLOBAL)
|
||||
|
||||
# CEF settings
|
||||
set(USE_ATL OFF) # Disable usage of ATL in CEF
|
||||
set(USE_SANDBOX OFF) # Disable usage of sandbox on windows
|
||||
|
||||
add_subdirectory(${CEF_ROOT} cef EXCLUDE_FROM_ALL)
|
||||
set_target_properties(libcef_dll_wrapper PROPERTIES FOLDER "Third Party Libraries")
|
||||
if (MSVC)
|
||||
# Modify CEF compiler options to match VC runtime
|
||||
get_target_property(cef_compile_options libcef_dll_wrapper COMPILE_OPTIONS)
|
||||
string(REGEX REPLACE "/MTd?" "" cef_compile_options ${cef_compile_options})
|
||||
set_target_properties(libcef_dll_wrapper PROPERTIES COMPILE_OPTIONS ${cef_compile_options})
|
||||
endif()
|
||||
|
||||
add_library(libcef SHARED IMPORTED GLOBAL)
|
||||
if(APPLE)
|
||||
set_target_properties(libcef PROPERTIES
|
||||
IMPORTED_LOCATION_DEBUG "${SOURCE_DIR}/Debug/Chromium Embedded Framework.framework/Chromium Embedded Framework"
|
||||
IMPORTED_LOCATION_RELEASE "${SOURCE_DIR}/Release/Chromium Embedded Framework.framework/Chromium Embedded Framework"
|
||||
IMPORTED_LOCATION_DEBUG "${CEF_ROOT}/Debug/Chromium Embedded Framework.framework/Chromium Embedded Framework"
|
||||
IMPORTED_LOCATION_RELEASE "${CEF_ROOT}/Release/Chromium Embedded Framework.framework/Chromium Embedded Framework"
|
||||
)
|
||||
else()
|
||||
set_target_properties(libcef PROPERTIES
|
||||
IMPORTED_LOCATION_DEBUG ${SOURCE_DIR}/Debug/libcef${CMAKE_LINK_LIBRARY_SUFFIX}
|
||||
IMPORTED_LOCATION_RELEASE ${SOURCE_DIR}/Release/libcef${CMAKE_LINK_LIBRARY_SUFFIX}
|
||||
IMPORTED_LOCATION_DEBUG ${CEF_ROOT}/Debug/libcef${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
IMPORTED_IMPLIB_DEBUG ${CEF_ROOT}/Debug/libcef${CMAKE_IMPORT_LIBRARY_SUFFIX}
|
||||
IMPORTED_LOCATION_RELEASE ${CEF_ROOT}/Release/libcef${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
IMPORTED_IMPLIB_RELEASE ${CEF_ROOT}/Release/libcef${CMAKE_IMPORT_LIBRARY_SUFFIX}
|
||||
)
|
||||
endif()
|
||||
|
||||
|
|
@ -56,8 +86,18 @@ if(APPLE)
|
|||
endif()
|
||||
|
||||
wx_add_library(webview_chromium ${WEBVIEW_CHROMIUM_FILES})
|
||||
wx_lib_include_directories(webview_chromium PRIVATE ${SOURCE_DIR})
|
||||
wx_lib_include_directories(webview_chromium PRIVATE ${CEF_ROOT})
|
||||
wx_lib_link_libraries(webview_chromium PUBLIC webview PRIVATE libcef libcef_dll_wrapper)
|
||||
add_dependencies(webview_chromium cef)
|
||||
|
||||
if(APPLE AND wxBUILD_SHARED)
|
||||
add_custom_command(
|
||||
TARGET webview_chromium
|
||||
POST_BUILD
|
||||
# Copy the CEF framework into the Frameworks directory.
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||
"${CEF_ROOT}/$<CONFIG>/Chromium Embedded Framework.framework"
|
||||
"$<TARGET_FILE_DIR:webview_chromium>/Frameworks/Chromium Embedded Framework.framework"
|
||||
)
|
||||
endif()
|
||||
|
||||
wx_finalize_lib(webview)
|
||||
|
|
|
|||
25
build/cmake/lib/webview_chromium/cef_download.cmake.in
Normal file
25
build/cmake/lib/webview_chromium/cef_download.cmake.in
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
#############################################################################
|
||||
# Name: build/cmake/lib/webview_chromium/cef_download.cmake.in
|
||||
# Purpose: CMakeLists.txt template to download CEF
|
||||
# Author: Tobias Taschner
|
||||
# Created: 2018-02-19
|
||||
# Copyright: (c) 2018 wxWidgets development team
|
||||
# Licence: wxWindows licence
|
||||
#############################################################################
|
||||
|
||||
cmake_minimum_required(VERSION 2.8.12)
|
||||
|
||||
project(cef-download NONE)
|
||||
|
||||
include(ExternalProject)
|
||||
|
||||
ExternalProject_Add(cef
|
||||
URL ${CEF_URL}
|
||||
URL_HASH SHA1=${CEF_SHA1}
|
||||
SOURCE_DIR "${CEF_SOURCE_DIR}"
|
||||
BINARY_DIR "${CEF_BUILD_DIR}"
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND ""
|
||||
INSTALL_COMMAND ""
|
||||
TEST_COMMAND ""
|
||||
)
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
#############################################################################
|
||||
# Name: build/cmake/lib/webview/fixup_cef.cmake
|
||||
# Purpose: CMake script to up patch CEF
|
||||
# Author: Tobias Taschner
|
||||
# Created: 2018-02-03
|
||||
# Copyright: (c) 2018 wxWidgets development team
|
||||
# Licence: wxWindows licence
|
||||
#############################################################################
|
||||
|
||||
# This script modifies CEF cmake files to allow different VC runtime settings
|
||||
|
||||
set(var_file cmake/cef_variables.cmake)
|
||||
|
||||
file(READ ${var_file} var_file_contents)
|
||||
string(REGEX REPLACE "/MTd?" "" new_file_contents ${var_file_contents})
|
||||
file(WRITE "${var_file}" ${new_file_contents})
|
||||
|
|
@ -12,7 +12,6 @@ wx_add_sample(webview LIBRARIES webview stc adv NAME webviewsample)
|
|||
if(wxUSE_WEBVIEW_CHROMIUM)
|
||||
wx_add_sample(webview LIBRARIES webview_chromium stc adv NAME webviewsample_chromium)
|
||||
target_compile_definitions(webviewsample_chromium PRIVATE -DwxWEBVIEW_SAMPLE_CHROMIUM)
|
||||
ExternalProject_Get_property(cef SOURCE_DIR)
|
||||
if(WIN32)
|
||||
add_custom_command(
|
||||
TARGET webviewsample_chromium
|
||||
|
|
@ -24,17 +23,17 @@ if(wxUSE_WEBVIEW_CHROMIUM)
|
|||
"-outputresource:$<TARGET_FILE:webviewsample_chromium>;#1"
|
||||
# Copy CEF libraries
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} -E copy_directory ${SOURCE_DIR}/$<CONFIG> $<TARGET_FILE_DIR:webviewsample_chromium>
|
||||
${CMAKE_COMMAND} -E copy_directory ${CEF_ROOT}/$<CONFIG> $<TARGET_FILE_DIR:webviewsample_chromium>
|
||||
# Copy CEF resources
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} -E copy_directory ${SOURCE_DIR}/Resources $<TARGET_FILE_DIR:webviewsample_chromium>
|
||||
${CMAKE_COMMAND} -E copy_directory ${CEF_ROOT}/Resources $<TARGET_FILE_DIR:webviewsample_chromium>
|
||||
COMMENT "Prepare executable for runtime..."
|
||||
)
|
||||
elseif(APPLE)
|
||||
# Define helper bundle
|
||||
set(CEF_HELPER_OUTPUT_NAME "webviewsample_chromium Helper")
|
||||
add_executable(webviewsample_chromium_helper MACOSX_BUNDLE ${wxSOURCE_DIR}/samples/webview/cef_process_helper.cpp)
|
||||
target_include_directories(webviewsample_chromium_helper PRIVATE ${SOURCE_DIR})
|
||||
target_include_directories(webviewsample_chromium_helper PRIVATE ${CEF_ROOT})
|
||||
target_link_libraries(webviewsample_chromium_helper libcef libcef_dll_wrapper)
|
||||
set_target_properties(webviewsample_chromium_helper PROPERTIES
|
||||
MACOSX_BUNDLE_INFO_PLIST ${wxSOURCE_DIR}/samples/webview/cef_helper_info.plist.in
|
||||
|
|
@ -43,6 +42,13 @@ if(wxUSE_WEBVIEW_CHROMIUM)
|
|||
OUTPUT_NAME ${CEF_HELPER_OUTPUT_NAME}
|
||||
)
|
||||
|
||||
if(NOT wxBUILD_SHARED)
|
||||
set_target_properties(webviewsample_chromium PROPERTIES
|
||||
INSTALL_RPATH "@executable_path/.."
|
||||
BUILD_WITH_INSTALL_RPATH TRUE
|
||||
)
|
||||
endif()
|
||||
|
||||
add_dependencies(webviewsample_chromium webviewsample_chromium_helper)
|
||||
|
||||
add_custom_command(
|
||||
|
|
@ -55,7 +61,7 @@ if(wxUSE_WEBVIEW_CHROMIUM)
|
|||
"$<TARGET_FILE_DIR:webviewsample_chromium>/../Frameworks/${CEF_HELPER_OUTPUT_NAME}.app"
|
||||
# Copy the CEF framework into the Frameworks directory.
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||
"${SOURCE_DIR}/$<CONFIG>/Chromium Embedded Framework.framework"
|
||||
"${CEF_ROOT}/$<CONFIG>/Chromium Embedded Framework.framework"
|
||||
"$<TARGET_FILE_DIR:webviewsample_chromium>/../Frameworks/Chromium Embedded Framework.framework"
|
||||
)
|
||||
endif()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue