# Copyright (c) 2014 The Chromium Embedded Framework Authors. All rights # reserved. Use of this source code is governed by a BSD-style license that # can be found in the LICENSE file. # OVERVIEW # # CMake is a cross-platform open-source build system that can generate project # files in many different formats. It can be downloaded from # http://www.cmake.org or installed via a platform package manager. # # CMake-generated project formats that have been tested with this CEF binary # distribution include: # # Linux: Ninja, GCC 7.5.0+, Unix Makefiles # MacOS: Ninja, Xcode 12.2 to 15.0 # Windows: Ninja, Visual Studio 2022 # # Ninja is a cross-platform open-source tool for running fast builds using # pre-installed platform toolchains (GNU, clang, Xcode or MSVC). It can be # downloaded from http://martine.github.io/ninja/ or installed via a platform # package manager. # # CMAKE STRUCTURE # # This CEF binary distribution includes the following CMake files: # # CMakeLists.txt Bootstrap that sets up the CMake environment. # cmake/*.cmake CEF configuration files shared by all targets. # libcef_dll/CMakeLists.txt Defines the libcef_dll_wrapper target. # tests/*/CMakeLists.txt Defines the test application target. # # See the "TODO:" comments below for guidance on how to integrate this CEF # binary distribution into a new or existing CMake project. # # BUILD REQUIREMENTS # # The below requirements must be met to build this CEF binary distribution. # # - CMake version 3.21 or newer. # # - Linux requirements: # Currently supported distributions include Debian 10 (Buster), Ubuntu 18 # (Bionic Beaver), and related. Ubuntu 18.04 64-bit with GCC 7.5.0+ is # recommended. Newer versions will likely also work but may not have been # tested. # Required packages include: # build-essential # libgtk3.0-dev (required by the cefclient target only) # # - MacOS requirements: # Xcode 12.2 to 15.0 building on MacOS 10.15.4 (Catalina) or newer. Only # 64-bit builds are supported. The Xcode command-line tools must also be # installed. Newer Xcode versions may not have been been tested and are not # recommended. # # - Windows requirements: # Visual Studio 2022 building on Windows 10 or newer. Windows 10/11 64-bit is # recommended. Newer versions will likely also work but may not have been # tested. # # BUILD EXAMPLES # # The below commands will generate project files and create a Debug build of all # CEF targets using CMake and the platform toolchain. # # Start by creating and entering the CMake build output directory: # > cd path/to/cef_binary_* # > mkdir build && cd build # # To perform a Linux build using a 32-bit CEF binary distribution on a 32-bit # Linux platform or a 64-bit CEF binary distribution on a 64-bit Linux platform: # Using Unix Makefiles: # > cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug .. # > make -j4 cefclient cefsimple # # Using Ninja: # > cmake -G "Ninja" -DCMAKE_BUILD_TYPE=Debug .. # > ninja cefclient cefsimple # # To perform a MacOS build using a 64-bit CEF binary distribution: # Using the Xcode IDE: # > cmake -G "Xcode" -DPROJECT_ARCH="x86_64" .. # Open build\cef.xcodeproj in Xcode and select Product > Build. # # Using Ninja: # > cmake -G "Ninja" -DPROJECT_ARCH="x86_64" -DCMAKE_BUILD_TYPE=Debug .. # > ninja cefclient cefsimple # # To perform a MacOS build using an ARM64 CEF binary distribution: # Using the Xcode IDE: # > cmake -G "Xcode" -DPROJECT_ARCH="arm64" .. # Open build\cef.xcodeproj in Xcode and select Product > Build. # # Using Ninja: # > cmake -G "Ninja" -DPROJECT_ARCH="arm64" -DCMAKE_BUILD_TYPE=Debug .. # > ninja cefclient cefsimple # # To perform a Windows build using a 32-bit CEF binary distribution: # Using the Visual Studio 2022 IDE: # > cmake -G "Visual Studio 17" -A Win32 .. # Open build\cef.sln in Visual Studio and select Build > Build Solution. # # Using Ninja with Visual Studio 2022 command-line tools: # (this path may be different depending on your Visual Studio installation) # > "C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\Build\vcvars32.bat" # > cmake -G "Ninja" -DCMAKE_BUILD_TYPE=Debug .. # > ninja cefclient cefsimple # # To perform a Windows build using a 64-bit CEF binary distribution: # Using the Visual Studio 2022 IDE: # > cmake -G "Visual Studio 17" -A x64 .. # Open build\cef.sln in Visual Studio and select Build > Build Solution. # # Using Ninja with Visual Studio 2022 command-line tools: # (this path may be different depending on your Visual Studio installation) # > "C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\Build\vcvars64.bat" # > cmake -G "Ninja" -DCMAKE_BUILD_TYPE=Debug .. # > ninja cefclient cefsimple # # To perform a Windows build using an ARM64 CEF binary distribution: # Using the Visual Studio 2022 IDE: # > cmake -G "Visual Studio 17" -A arm64 .. # Open build\cef.sln in Visual Studio and select Build > Build Solution. # # Using Ninja with Visual Studio 2022 command-line tools: # (this path may be different depending on your Visual Studio installation) # > "C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\Build\vcvarsamd64_arm64.bat" # > cmake -G "Ninja" -DCMAKE_BUILD_TYPE=Debug .. # > ninja cefsimple # # Global setup. # # For VS2022 and Xcode 12+ support. cmake_minimum_required(VERSION 3.21) # Only generate Debug and Release configuration types. set(CMAKE_CONFIGURATION_TYPES Debug Release) # Project name. # TODO: Change this line to match your project name when you copy this file. project(cef) # Use folders in the resulting project files. set_property(GLOBAL PROPERTY OS_FOLDERS ON) # # CEF_ROOT setup. # This variable must be set to locate the binary distribution. # TODO: Choose one of the below examples and comment out the rest. # # Example 1: The current directory contains both the complete binary # distribution and your project. # A. Comment in these lines: # set(CEF_ROOT "${CMAKE_CURRENT_SOURCE_DIR}") set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CEF_ROOT}/cmake") # Example 2: The binary distribution is in a separate directory from your # project. Locate the binary distribution using the CEF_ROOT CMake # variable. # A. Create a directory structure for your project like the following: # myproject/ # CMakeLists.txt <= top-level CMake configuration # mytarget/ # CMakeLists.txt <= CMake configuration for `mytarget` # ... other `mytarget` source files # B. Copy this file to "myproject/CMakeLists.txt" as the top-level CMake # configuration. # C. Create the target-specific "myproject/mytarget/CMakeLists.txt" file for # your application. See the included cefclient and cefsimple CMakeLists.txt # files as an example. # D. Comment in these lines: # # set(CEF_ROOT "c:/path/to/cef_binary_3.2704.xxxx.gyyyyyyy_windows32") # set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CEF_ROOT}/cmake") # Example 3: The binary distribution is in a separate directory from your # project. Locate the binary distribution using the CEF_ROOT # environment variable. # A. Create a directory structure for your project like the following: # myproject/ # CMakeLists.txt <= top-level CMake configuration # cmake/ # FindCEF.cmake <= CEF CMake configuration entry point # mytarget/ # CMakeLists.txt <= CMake configuration for `mytarget` # ... other `mytarget` source files # B. Copy this file to "myproject/CMakeLists.txt" as the top-level CMake # configuration. # C. Copy the cmake/FindCEF.cmake file to "myproject/cmake/FindCEF.cmake". # D. Create the target-specific "myproject/mytarget/CMakeLists.txt" file for # your application. See the included cefclient and cefsimple CMakeLists.txt # files as an example. # E. Set the CEF_ROOT environment variable before executing CMake. For example: # > set CEF_ROOT=c:\path\to\cef_binary_3.2704.xxxx.gyyyyyyy_windows32 # F. Comment in these lines: # # set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake") # # Load the CEF configuration. # # Execute FindCEF.cmake which must exist in CMAKE_MODULE_PATH. find_package(CEF REQUIRED) # # Define CEF-based targets. # # Include the libcef_dll_wrapper target. # Comes from the libcef_dll/CMakeLists.txt file in the binary distribution # directory. add_subdirectory(${CEF_LIBCEF_DLL_WRAPPER_PATH} libcef_dll_wrapper) # Include application targets. # Comes from the /CMakeLists.txt file in the current directory. # TODO: Change these lines to match your project target when you copy this file. if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/tests") add_subdirectory(tests/cefsimple) add_subdirectory(tests/gtest) add_subdirectory(tests/ceftests) endif() if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/tests/cefclient") add_subdirectory(tests/cefclient) endif() # Display configuration settings. PRINT_CEF_CONFIG() # # Define the API documentation target. # find_package(Doxygen) if(DOXYGEN_FOUND) add_custom_target(apidocs ALL # Generate documentation in the docs/html directory. COMMAND "${DOXYGEN_EXECUTABLE}" Doxyfile # Write a docs/index.html file. COMMAND ${CMAKE_COMMAND} -E echo "" > docs/index.html WORKING_DIRECTORY "${CEF_ROOT}" COMMENT "Generating API documentation with Doxygen..." VERBATIM ) else() message(WARNING "Doxygen must be installed to generate API documentation.") endif()