首页 > 其他分享 >CEF开发环境搭建

CEF开发环境搭建

时间:2024-09-06 21:16:15浏览次数:8  
标签:CEF libcef cmake cef dll 开发 DIR 搭建

本文主要记录windows平台搭建cef开发环境的过程。

前置条件

  • Windows 操作系统
  • vs studio / vscode
  • cmake

CEF 源码下载

通过github 的cef找到下载预编译好的cef链接:https://cef-builds.spotifycdn.com/index.html

找到对应的操作系统及cpu架构的tab页, 笔者选择的是Windows 64-bit, 然后在Current Stable Build > Standard Distribution下载对应的压缩包。

这个包预编译了大部分所需库,分别在Debug/Release目录中, 包括:

  • libcef.dll
  • cef_sandbox.lib
  • ...
    还包含编译libcef_dll_wrapper所需的源码及sample

libcef_dll_wrapper 编译

打开cmake-gui, 选择源码目录, 选择生成目录。 configure > generate > open project 然后编译。

开发环境配置

接下来描述的开发环境配置仅适用于cmake项目

  1. 将预编译好的库复制出来, 包括目录为

    • Debug
    • Release
      • cef_sandbox.lib
      • chrome_elf.dll
      • d3dcompiler_47.dll
      • dxcompiler.dll
      • dxil.dll
      • libcef.dll
      • libcef.lib
      • libcef_dll_wrapper.lib
      • libcef_dll_wrapper.pdb
      • libEGL.dll
      • libGLESv2.dll
      • snapshot_blob.bin
      • v8_context_snapshot.bin
      • vk_swiftshader.dll
      • vk_swiftshader_icd.json
      • vulkan-1.dll
    • Resources
  2. 将cmake、include目录复制出来, cmake目录包含如下文件:

    • cef_macros.cmake
    • cef_variables.cmake
    • FindCEF.cmake
  3. 在cmake目录中新增cef_dll_wrapper.cmake文件:

     set(CEF_CEFWRAPPER_LIB_DEBUG "${CEF_BINARY_DIR_DEBUG}/libcef_dll_wrapper.lib")
     set(CEF_CEFWRAPPER_LIB_RELEASE "${CEF_BINARY_DIR_RELEASE}/libcef_dll_wrapper.lib")
    
    
     ADD_LOGICAL_TARGET("libcef_dll_wrapper" "${CEF_CEFWRAPPER_LIB_DEBUG}" "${CEF_CEFWRAPPER_LIB_RELEASE}")
     ADD_LOGICAL_TARGET("libcef_lib" "${CEF_LIB_DEBUG}" "${CEF_LIB_RELEASE}")
    
     if(USE_SANDBOX)
         # Logical target used to link the cef_sandbox library.
         ADD_LOGICAL_TARGET("cef_sandbox_lib" "${CEF_SANDBOX_LIB_DEBUG}" "${CEF_SANDBOX_LIB_RELEASE}")
     endif()
    

    ADD_LOGICAL_TARGET定义在cef_macros.cmake中, 主要用于添加一个imported项目。
    USE_SANDBOX定义在cef_variables.cmake中, 主要确定是否开启沙箱,如果开启, 将会激活CEF_USE_SANDBOX宏定义,此宏直接影响示例代码中关于沙箱的设置。USE_SANDBOX同时会影响与沙箱相关的library。

  4. 修改FindCEF.cmake, 在文件前头添加get_filename_component(CEF_ROOT ${CMAKE_CURRENT_LIST_DIR} DIRECTORY)用于动态确定环境位置。在末尾添加include("cef_dll_wrapper") 用于包含cef_dll_wrapper相关环境

  5. 完成

项目配置示例

find_package(CEF MODULE REQUIRED)

add_executable (mytarget WIN32 ${SOURCEFILES})
set(CEF_TARGET_OUT_DIR "${CMAKE_CURRENT_BINARY_DIR}")
SET_EXECUTABLE_TARGET_PROPERTIES(mytarget)


target_compile_definitions(mytarget PRIVATE   UNICODE _UNICODE _WINDOWS)
target_link_options(mytarget PRIVATE
    /ENTRY:wWinMainCRTStartup
)


target_link_libraries(mytarget libcef_lib libcef_dll_wrapper ${CEF_STANDARD_LIBS} ${CEF_SANDBOX_STANDARD_LIBS})
if (CMAKE_VERSION VERSION_GREATER 3.12)
  set_property(TARGET mytarget PROPERTY CXX_STANDARD 20)
endif()


if(USE_SANDBOX)
    # Logical target used to link the cef_sandbox library.
    target_link_libraries(mytarget cef_sandbox_lib )
endif()

# Add the custom manifest files to the executable.
ADD_WINDOWS_MANIFEST("${CMAKE_CURRENT_SOURCE_DIR}/winres" "mytarget" "exe")


# Copy binary and resource files to the target output directory.
COPY_FILES("mytarget" "${CEF_BINARY_FILES}" "${CEF_BINARY_DIR}" "${CMAKE_CURRENT_BINARY_DIR}")
COPY_FILES("mytarget" "${CEF_RESOURCE_FILES}" "${CEF_RESOURCE_DIR}" "${CMAKE_CURRENT_BINARY_DIR}")

关键配置

  1. find_package(CEF MODULE REQUIRED)

  2. set(CEF_TARGET_OUT_DIR "${CMAKE_CURRENT_BINARY_DIR}")

    这个设置主要是因为ADD_WINDOWS_MANIFEST这个宏中用到了CEF_TARGET_OUT_DIR

  3. SET_EXECUTABLE_TARGET_PROPERTIES(mytarget) 主要用于设置必要的编译链接选项

  4. 必要依赖的环境libcef_lib libcef_dll_wrapper ${CEF_STANDARD_LIBS} ${CEF_SANDBOX_STANDARD_LIBS}之所以需要CEF_SANDBOX_STANDARD_LIBS,是因为这个宏定义了Windows必要的依赖库, 特别是Delayimp.lib。 否则报链接错误。

  5. 其他没啥可提的了, COPY_FILES是必要的,方便调试运行。

标签:CEF,libcef,cmake,cef,dll,开发,DIR,搭建
From: https://www.cnblogs.com/quenwaz/p/18400990

相关文章

  • 使用centos7搭建RAID磁盘阵列,RAID0,RAID1,RAID5,ARID10,讲述RAID0、1、5、10的原理。
    1.RAID概念磁盘阵列(RedundantArraysofIndependentDisks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意。磁盘阵列是由很多价格较便宜的磁盘,以硬件(RAID卡)或软件(MDADM)形式组合成一个容量巨大的磁盘组,利用多个磁盘组合在一起,提升整个磁盘系统效能。利用这项技术,将数据切割......
  • Openharmony软件评估指南-米尔瑞芯微RK3568开发板
    Openharmony软件评估指南用于介绍在米尔的开发板上运行Openharmony系统下的核心资源与外设资源的测试步骤与评估方法。本文可作为前期评估指南使用,也可以作为通用系统开发的测试指导书使用。本文档使用于米尔电子的MYD-LR3568系列板卡,该板卡是米尔电子的嵌入式开发平台基于瑞芯微......
  • 如何本地搭建Whisper语音识别模型
    要在本地搭建Whisper语音识别模型,你需要遵循以下步骤,注意Whisper模型是由OpenAI发布的,但基于你的要求,这里将尽可能提供详细的指导:环境准备:首先,确保你的计算机安装了Python,推荐版本为Python3.7或更高。安装必要的深度学习框架,如PyTorch。你可以通过命令行输入以下命令来安......
  • 手持机定制方案_安卓手机主板定制_MTK联发科智能终端方案开发
    手持机定制方案搭载了8核CPU,主频高达2.0GHz,并运行Android12.0操作系统。无论是多媒体播放、游戏娱乐还是多任务处理,均能带来极为流畅的体验。高达8GB的RAM确保应用程序和游戏可以顺畅运行,而256GB的内部存储空间以及支持扩展至512GB的存储容量,则满足了用户对于大容量数据存储的需求,......
  • Ubuntu中安装Anaconda3和Pycharm 及其环境搭建
    目录Anaconda3的安装Conda的使用Pycharm的安装Pycharm使用Conda的环境 Anaconda3的安装Anaconda3清华大学镜像连接:Indexof/anaconda/archive/|清华大学开源软件镜像站|TsinghuaOpenSourceMirror选择自己对应的版本下载。下载完后,找到下载文件的位置打开终端......
  • 使用css和html初步搭建页面
    由于很多html标签在博客中会生效,所以我有时候会简写1.html分为头部head和body.头部中定义标题title2.设置标题使用h1,共有六级为h1~h6.想要设置标题具体颜色要使用css,的style,有三种方式(1)h1color:(2)写一个外部css文件(3)使用设置.同时使用元素选择,ID选择,类选择可以单......
  • 面向对象开发重点摘要【软件设计师】
    文章目录前言一、面向对象基础1.1基本概念1.2面向对象开发流程二、UML2.1UML图的概念及分类2.2UML中的关系三、设计模式3.1设计模式分类汇总3.2创建型模式3.3结构型模式3.4行为型模式前言本文是在备考软考-软件设计师时编写的,为了记忆重点内容,内容较为简略,只是粗......
  • Harmony开发之Toast效果
    在HarmonyOS应用开发中,我们经常需要展示一些短暂的信息提示给用户,类似于Android中的Toast。本文将介绍如何利用自定义弹窗和定时器来实现这种功能。我们将通过几个不同的场景来探讨这一主题,并附带相应的代码示例。场景一:基本的自定义弹窗实现在这个场景中,我们需要创建一个带有图标......
  • 民宿小程序开发制作,开发优势分析
    近年来,旅游业发展旺盛,民宿也成为了大众出行的必要选择,为推动民宿行业的发展,“互联网+民宿”得模式获得了广泛关注,不仅提高了民宿预订的便利性,也为民宿行业的发展带来了全新的发展机遇。民宿预订小程序是一个独立的小程序,能覆盖到各个区域,便于用户在线选择,预约合适的民宿房间。小程......
  • python测试开发基础---threading
    1.核心概念线程(Thread):线程是轻量级的进程,在同一进程内可以并行执行多个任务。线程共享进程的资源,如内存和文件描述符,但每个线程有自己的执行栈和局部变量。全局解释器锁(GIL):Python中的GIL限制了同一进程中多个线程的真正并行执行。它确保同一时间只有一个线程可以执行Pyth......