达永编程网

程序员技术分享与交流平台

使用Cmake编译并运行CEF,并实现与js的简单交互(一)

在自动化测试时,比如:模拟登录,填充默认值,模拟浏览器操作等,或者,在获取网页的动态html时,比如有些用Vue构建的单页应用等,网页源代码和渲染后的html差别较大,这时候,就需要使用Cef的强大功能,通过扩展js功能完成对html里dom的控制了。

使用Cef之前,需要到CEF Automated Builds网站,下载支持包,自己使用Cmake编译,然后使用,例如:下载cef_binary_133.4.5+gdb28106+
chromium-133.0.6943.142_windows64.tar.bz2这个包。下载到本地后,在解压目录里创建build目录,用于存放cmake编译后的文件。

编译后,点击open project,打开工程,找到libcef_dll_wrapper,点击生成,同时可以选择Debug或Release模式,生成不同运行环境的文件。

生成后,根据控制台显示的文件路径,把编译后的文件libcef_dll_wrapper,拷贝到Cef对应的Debug或Release文件夹里。

这样,准备工作就做好了。

然后,开始配置Cmake环境:

cmake_minimum_required(VERSION 3.10.0)
project(cef VERSION 0.1.0 LANGUAGES C CXX)

# 或显式设置标准
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
#设置根目录
set(CEF_ROOT "F:\\downloads\\cef_binary_133.4.2+g0852ba6+chromium-133.0.6943.127_windows64")

set(CEF_LIB_DIR "${CEF_ROOT}/Debug")

find_path(CEF_INCLUDE_DIR "include/cef_base.h" REQUIRED)

#  链接静态库
add_library(libcef STATIC IMPORTED)
set_target_properties(libcef PROPERTIES
    IMPORTED_LOCATION "${CEF_LIB_DIR}/libcef.lib"
)
#  链接静态库
add_library(libcef_dll_wrapper STATIC IMPORTED)
set_target_properties(libcef_dll_wrapper PROPERTIES
    IMPORTED_LOCATION "${CEF_LIB_DIR}/libcef_dll_wrapper.lib"
)

set(SOURCES 
    src/acz_app.cpp
    src/acz_client.cpp
)

add_executable(cef main.cpp ${SOURCES})
#引入头文件
target_include_directories(cef PRIVATE 
    src
    ${CEF_ROOT}/include       # 新增基础路径
    ${CEF_ROOT}               # 部分版本需要根目录
    ${CEF_INCLUDE_DIRS}        # 保留原有变量
)

#  链接 CEF 依赖
target_link_libraries(${PROJECT_NAME}
    libcef
    libcef_dll_wrapper
    shlwapi.lib  # Windows 系统库
    delayimp.lib
    advapi32.lib
    winmm.lib shlwapi.lib dwmapi.lib
)
#拷贝运行时文件
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E copy_directory
        "${CEF_ROOT}/Resources"
        $
    COMMAND ${CMAKE_COMMAND} -E copy_directory
        "${CEF_ROOT}/Debug"
        $
)

这样就准备好了,运行环境。

#在头条记录我的2025#

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言