257 lines
9.5 KiB
CMake
257 lines
9.5 KiB
CMake
# 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.4 building on MacOS 11.0 (Big Sur) or newer. 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 <target>/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.
|
|
#
|
|
|
|
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile")
|
|
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 "<html><head><meta http-equiv=\"refresh\" content=\"0;URL='html/index.html'\"/></head></html>" > 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()
|
|
endif()
|