QCefView(1)—— CMAKE项目、库文件生成和项目测试

2023-11-09

目录

下载资源

说明文档     Quick Start with Qt+Cef https://tishion.github.io/QCefView

CMAKE生成.sln项目文件

库文件编译和测试项目编译运行

测试QCefView自带的项目QCefViewTest


下载资源

https://github.com/tishion/QCefView

说明文档

Quick Start with Qt+Cef https://tishion.github.io/QCefView

This is the fresh new reforming version of QCefView, if you need to use the legacy one please checkout the legacy-archivebranch.

Build instruction:

  1. Download and install CMake

  2. Download and install Qt SDK from Qt Downloads

  3. Download CEF binary distribution Chromium Embedded Framework (CEF) Automated Builds and extract it to dep directory, for example:

    root
    ├─dep
    │  └─cef_binary_76.1.13+gf19c584+chromium-76.0.3809.132_windows64
    ├─src
    └─test
    
  4. Modify the config.cmake to set the required build configurations

  5. Just use CMake to build the project, for example:

    REM create the build folder 
    mkdir build.win && cd build.win
    
    REM generate and build the project
    cmake .. && cmake --build .

Note: When I start the reforming I use Qt 5.12.4 and CEF cef_binary_76.1.13+gf19c584+chromium-76.0.3809.132_windows64. You need to make sure the version you are choosing is compatible with the code in this repo.

为了减少错误的产生,笔者亦采用  Qt 5.12.4 and CEF cef_binary_76.1.13+cef_binary_76.1.13+gf19c584+chromium-76.0.3809.132_windows32,编译链选择msvc 2017 x86.文件目录按照上说明文档进行。

 

CMAKE生成.sln项目文件

按照官方给的说明进行编译即可:

#REM create the build folder 
mkdir build.win && cd build.win

#REM generate and build the project
cmake .. && cmake --build .

按照上面编译会有几处错误产生,需要做如下的修改。

1、D:\QCefView-master\config.cmake 文件需要按照自己的配置做对应的修改,譬如笔者的:

#
# Build environment configuration file for QCefView
#

#
# The Qt SDK path
#
set(QT_SDK_DIR
  # Change this value to the Qt SDK path of your build environment  ######在此处修改自己的路径
  "C:\\Qt\\Qt5.12.0\\5.12.0\\msvc2017\\"
)

#
# The root dir of the CEF SDK
#
set(CEF_SDK_DIR
  # Change this value to the CEF binary distribution path of your build environment
  "${CMAKE_CURRENT_SOURCE_DIR}/dep/cef_binary_76.1.13+gf19c584+chromium-76.0.3809.132_windows32"
)

#################################################################################
#
# For CI system
#
if (DEFINED ENV{APPVEYOR})
  set(QT_SDK_DIR
    # Change this value to the Qt SDK path of your build environment   ######在此处修改自己的路径
    "C:\\Qt\\Qt5.12.0\\5.12.0\\msvc2017\\"
  )
endif()

2、 D:\QCefView-master\CMakeLists.txt 文件中对应修改,屏蔽两处,第69和第70行处:

#cmake_policy(SET CMP0074 NEW)
#cmake_policy(SET CMP0077 NEW)

# 
# The main config file for QCefView
# NOTE:
#   Usually there is no need to change this file.
#   Change the config.cmake instead.
#
cmake_minimum_required(VERSION 3.4.1)
project(QCefView)

# Determine the platform.
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
  set(OS_MACOSX 1)
  set(OS_POSIX 1)
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
  set(OS_LINUX 1)
  set(OS_POSIX 1)
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows")
  set(OS_WINDOWS 1)
endif()

# Determine the project architecture.
if(NOT DEFINED PROJECT_ARCH)
  if(CMAKE_SIZEOF_VOID_P MATCHES 8)
    set(PROJECT_ARCH "x86_64")
  else()
    set(PROJECT_ARCH "x86")
  endif()

  if(OS_MACOSX)
    # PROJECT_ARCH should be specified on Mac OS X.
    message(WARNING "No PROJECT_ARCH value specified, using ${PROJECT_ARCH}")
  endif()
endif()

# Set common configurations
###############################################################
# Use solution folder
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set(CMAKE_CXX_STANDARD 11)
set(CXX_STANDARD_REQUIRED)
set(CMAKE_CONFIGURATION_TYPES Debug Release)
set(QCEF_VIEW_SDK_OUT ${CMAKE_SOURCE_DIR}/out/${PROJECT_NAME})
set(QCEF_VIEW_SDK_BIN_OUT ${CMAKE_SOURCE_DIR}/out/${PROJECT_NAME}/bin)
set(QCEF_VIEW_SDK_LIB_OUT ${CMAKE_SOURCE_DIR}/out/${PROJECT_NAME}/lib)
set(QCEF_VIEW_SDK_INC_OUT ${CMAKE_SOURCE_DIR}/out/${PROJECT_NAME}/include)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${QCEF_VIEW_SDK_BIN_OUT})
###############################################################

# Include the local config files
###############################################################
include(config.cmake)
###############################################################

# Append the QT dir to CMAKE_PREFIX_PATH
###############################################################
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${QT_SDK_DIR})
###############################################################


# Set CEF root dir and append it to CMAKE_MODULE_PATH
###############################################################
set(CEF_ROOT "${CEF_SDK_DIR}")
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CEF_ROOT}/cmake")
###############################################################


# Config the CEF
###############################################################
#cmake_policy(SET CMP0074 NEW)
#cmake_policy(SET CMP0077 NEW)

# Set the runtime library type
set(CEF_RUNTIME_LIBRARY_FLAG "/MD" CACHE STRING "Use dynamic runtime")

# Disable the SANDBOX
set(USE_SANDBOX OFF CACHE BOOL "Disable the Sandbox")

# Disable the ATL
set(USE_ATL OFF CACHE STRING "Disable the ATL")

# Find the CEF package
find_package(CEF REQUIRED)

# Store the libcef.lib path and cef dll wrapper target name
# NOTE: we set this just for simplify the following referring.
set(CEF_LIB_FILE "${CEF_BINARY_DIR}/libcef.lib")
set(CEF_DLL_WRAPPER "libcef_dll_wrapper")

# Add build target 
add_subdirectory(${CEF_LIBCEF_DLL_WRAPPER_PATH})
PRINT_CEF_CONFIG()
###############################################################


# Add all targets
###############################################################
add_subdirectory(src/QCefProto)

include_directories(
  src/QCefProto
  ${CEF_ROOT}
)

set(QCEF_WING_EXE "QCefWing")
add_subdirectory(src/QCefWing)

set(QCEF_VIEW_DLL "QCefView")
add_subdirectory(src/QCefView)
###############################################################


# Add demo
###############################################################
add_subdirectory(test/QCefViewTest)
###############################################################

3、D:\QCefView-master\src\QCefWing\CMakeLists.txt ,屏蔽资源文件配置以下部分,否则会提示找不到资源文件或路径错误:

4、D:\QCefView-master\src\QCefView\CMakeLists.txt  增加以下配置,否则会提示以下错误:

CMake Error at GUISupport/Qt/CMakeLists.txt:72 (find_package):

   By not providing "FindQt5.cmake" in CMAKE_MODULE_PATH this project has
   asked CMake to find a package configuration file provided by "Qt5", but
   CMake did not find one.

   Could not find a package configuration file provided by "Qt5" with any of
   the following names:

     Qt5Config.cmake
     qt5-config.cmake

   Add the installation prefix of "Qt5" to CMAKE_PREFIX_PATH or set "Qt5_DIR"
   to a directory containing one of the above files.  If "Qt5" provides a
   separate development package or SDK, be sure it has been installed.

解决方法,增加以下配置:

set(CMAKE_PREFIX_PATH "C:\\Qt\\Qt5.12.0\\5.12.0\\msvc2017\\")
set(Qt5_DIR "C:\\Qt\\Qt5.12.0\\5.12.0\\msvc2017\\lib\\cmake\\Qt5\\")
FIND_PACKAGE(Qt5Widgets)
QCefView-master\src\QCefView\CMakeLists.txt  增加Qt5配置

 

库文件编译和测试项目编译运行

1、经过上面的CMAKE后,如果运行正确会打印以下信息:

D:\QCefView-master\build.win>cmake .. && cmake --bulid .
-- *** CEF CONFIGURATION SETTINGS ***
-- Generator:                    Visual Studio 15 2017
-- Platform:                     Windows
-- Project architecture:         x86
-- Binary distribution root:     D:/QCefView-master/dep/cef_binary_76.1.13+gf19c584+chromium-76.0.3809.132_windows32
-- Visual Studio ATL support:    OFF
-- CEF sandbox:                  OFF
-- Standard libraries:           comctl32.lib;rpcrt4.lib;shlwapi.lib;ws2_32.lib
-- Compile defines:              __STDC_CONSTANT_MACROS;__STDC_FORMAT_MACROS;WIN32;_WIN32;_WINDOWS;UNICODE;_UNICODE;WINVER=0x0601;_WIN32_WINNT=0x601;NOMINMAX;WIN32_LEAN_AND_MEAN;_HAS_EXCEPTIONS=0
-- Compile defines (Debug):
-- Compile defines (Release):    NDEBUG;_NDEBUG
-- C compile flags:              /MP;/Gy;/GR-;/W4;/WX;/wd4100;/wd4127;/wd4244;/wd4481;/wd4512;/wd4701;/wd4702;/wd4996;/Zi
-- C compile flags (Debug):      /MDd;/RTC1;/Od
-- C compile flags (Release):    /MD;/O2;/Ob2;/GF
-- C++ compile flags:            /MP;/Gy;/GR-;/W4;/WX;/wd4100;/wd4127;/wd4244;/wd4481;/wd4512;/wd4701;/wd4702;/wd4996;/Zi
-- C++ compile flags (Debug):    /MDd;/RTC1;/Od
-- C++ compile flags (Release):  /MD;/O2;/Ob2;/GF
-- Exe link flags:                /MANIFEST:NO;/LARGEADDRESSAWARE
-- Exe link flags (Debug):       /DEBUG
-- Exe link flags (Release):
-- Shared link flags:
-- Shared link flags (Debug):    /DEBUG
-- Shared link flags (Release):
-- CEF Binary files:             chrome_elf.dll;d3dcompiler_47.dll;libcef.dll;libEGL.dll;libGLESv2.dll;natives_blob.bin;snapshot_blob.bin;v8_context_snapshot.bin;swiftshader
-- CEF Resource files:           cef.pak;cef_100_percent.pak;cef_200_percent.pak;cef_extensions.pak;devtools_resources.pak;icudtl.dat;locales
-- Configuring done
-- Generating done
-- Build files have been written to: D:/QCefView-master/build.win
-- *** CEF CONFIGURATION SETTINGS ***
-- Generator:                    Visual Studio 15 2017
-- Platform:                     Windows
-- Project architecture:         x86
-- Binary distribution root:     D:/QCefView-master/dep/cef_binary_76.1.13+gf19c584+chromium-76.0.3809.132_windows32
-- Visual Studio ATL support:    OFF
-- CEF sandbox:                  OFF
-- Standard libraries:           comctl32.lib;rpcrt4.lib;shlwapi.lib;ws2_32.lib
-- Compile defines:              __STDC_CONSTANT_MACROS;__STDC_FORMAT_MACROS;WIN32;_WIN32;_WINDOWS;UNICODE;_UNICODE;WINVER=0x0601;_WIN32_WINNT=0x601;NOMINMAX;WIN32_LEAN_AND_MEAN;_HAS_EXCEPTIONS=0
-- Compile defines (Debug):
-- Compile defines (Release):    NDEBUG;_NDEBUG
-- C compile flags:              /MP;/Gy;/GR-;/W4;/WX;/wd4100;/wd4127;/wd4244;/wd4481;/wd4512;/wd4701;/wd4702;/wd4996;/Zi
-- C compile flags (Debug):      /MDd;/RTC1;/Od
-- C compile flags (Release):    /MD;/O2;/Ob2;/GF
-- C++ compile flags:            /MP;/Gy;/GR-;/W4;/WX;/wd4100;/wd4127;/wd4244;/wd4481;/wd4512;/wd4701;/wd4702;/wd4996;/Zi
-- C++ compile flags (Debug):    /MDd;/RTC1;/Od
-- C++ compile flags (Release):  /MD;/O2;/Ob2;/GF
-- Exe link flags:                /MANIFEST:NO;/LARGEADDRESSAWARE
-- Exe link flags (Debug):       /DEBUG
-- Exe link flags (Release):
-- Shared link flags:
-- Shared link flags (Debug):    /DEBUG
-- Shared link flags (Release):
-- CEF Binary files:             chrome_elf.dll;d3dcompiler_47.dll;libcef.dll;libEGL.dll;libGLESv2.dll;natives_blob.bin;snapshot_blob.bin;v8_context_snapshot.bin;swiftshader
-- CEF Resource files:           cef.pak;cef_100_percent.pak;cef_200_percent.pak;cef_extensions.pak;devtools_resources.pak;icudtl.dat;locales
-- Configuring done
-- Generating done
-- Build files have been written to: D:/QCefView-master/build.win

2、通过生成的sln项目,我们在visual studio中打开项目,并进行库文件的编译

项目结构:

依次设置 libcef_dll_wrapper 、QCefProto、QCefView、QCefWing为启动项目,生成目标项目,可得到对应的目标文件。

测试QCefView自带的项目QCefViewTest

正常运行,生成如下桌面程序:

 

自此,QCefView使用第一步,也就是第一篇到此完成。接下来,将和大家分享如何在自己的Qt项目中使用QCefView。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QCefView(1)—— CMAKE项目、库文件生成和项目测试 的相关文章

  • MANIFEST.MF文件作用及格式要求

    MANIFEST MF文件作用及格式要求 manifest mf文件格式如下 Manifest Version 1 0 Class Path xxx1 jar xxx2 jar xxx3 jar xxx4 jar xxx5 jar Main
  • 跨模态预训练迁移

    1 ViLD Zero Shot Detection via Vision and Language Knowledge Distillation code 2 OVR CNN Open Vocabulary Object Detectio
  • Tars源码分析---智能指针的实现

    前言 TC AutoPtr TC HandleBaseT 构造函数 赋值重载 析构函数 TC ScopedPtr TC SharedPtr tc shared count base tc shared count impl p tc sha
  • pycharm所有版本 http://www.jetbrains.com/pycharm/download/previous.html 打开激活窗口 选择 Activate new license

    pycharm所有版本 http www jetbrains com pycharm download previous html 打开激活窗口 选择 Activate new license with License server 用li
  • YAML学习笔记

    一 YAML概念 在运维日常工作中又很多遇到yaml 例如写ansible的playbook 利用yaml来定义创建各应用及服务 1 1 概念 YAML 发音 j m l 是一个类似 XML JSON 的数据序列化语言 YAML是专门用来写
  • HTTP Status 400 – Bad Request

    采用SpringMVC架构 写的一个简单的form请求 结果出错了 报错信息如下 Type Status Report Description The server cannot or will not process the reques
  • 计算机启动过程详解

    打开电源启动机器几乎是电脑爱好者每天必做的事情 面对屏幕上出现的一幅幅启动画面 我们一点儿也不会感到陌生 但是 计算机在显示这些启动画面时都做了些什么工作呢 相信有的朋友还不是很清楚 本文就来介绍一下从打开电源到出现Windows的蓝天白云
  • opencv源码阅读之——iOS的两条接口UIImageToMat()和MatToUIImage()

    转自 https www cnblogs com panxiaochun p 5387743 html 本文为作者原创 未经允许不得转载 原文由作者发表在博客园 http www cnblogs com panxiaochun p 5387
  • 小程序微信支付申请与配置完整版操作流程

    小程序微信支付申请与配置完整版操作流程 一 申请小程序微信支付 微信支付申请分为两种情况 情况一 申请新的微信支付商户号 情况二 绑定已有微信支付商户号 注意 申请微信支付的小程序账户需要进行微信认证 注册主体为个人的小程序目前暂不支持微信
  • Excel转CSV格式

    注意 CSV文件导出来的 可以理解为 就是一个 普通的文件 但至于使用什么样的软件打开就是另一马事了 比如Excel打开后 出来 自动过滤了数字前面的0 这玩意程序控制不到 那是Excel的事情 CSV不是Excel文件切记 只不过用表格软
  • Cuda 11/10的Dockerfile

    说明 如果NVIDIA显卡不满足要求 请修改dockerfile文件配置要求或慎重使用 关于dockerfile使用请参考我的博客文章 https blog csdn net weixin 41194129 category 1021002
  • 期中总结(码猿周六下午)

    期中总结 这半个学期我们第一二节课考了试 但是 第一次 115分 第二次 110分 结果都很不理想 不过这也在情理之中 之后我们学习了 简单分治 前缀和 二分法 贪心加强 递推 但是实际上后面几题都听得云里雾里的 毕竟是基础不好 再加上码龄
  • 一元多项式求导 C语言

    设计函数求一元多项式的导数 注 x n n为整数 的一阶导数为nxn 1 输入格式 以指数递降方式输入多项式非零项系数和指数 绝对值均为不超过 1000 的整数 数字间以空格分隔 输出格式 以与输入相同的格式输出导数多项式非零项的系数和指数
  • 前端优秀插件网站汇总整理——轻松建站。。。

    1 Amaze Ui 妹子UI 中国首个html5跨屏前端框架 http amazeui org 2 WebUploader 一个简单的以HTML5为主 FLASH为辅的现代文件上传组件 http fex baidu com webuplo
  • <python爬虫之JS逆向实例-1>新浪网

    声明 本文只作学习研究 禁止用于非法用途 否则后果自负 如有侵犯了您的合法权益 请告知 我将及时更正 删除 谢谢 邮箱地址 lc1139411732 163 com 文章目录 一 项目准备 二 参数分析 三 静态调试 四 动态调试 五 堆栈
  • yml连接两个mysql数据库_SpringBoot 多数据源配置/连接两个数据库 (SpringBoot+Mysql+SqlServer)(亲测可用)...

    Boot项目原配Mysql数据库 业务需要加上sqlserver数据库 网上看了两天 趟了不少坑 其实网上帖子挺全的 我遇到的问题没有太多相关介绍 现在搞好后分享给大家 自己也做个记录 1 首先 依赖配置 按需配置重点是数据库jar包跟bo
  • 攻防世界-lottery

    得到flag要 9990000 通过抽奖的方式获得钱 基本要7个数字都相同 扫目录 依次点开 robots txt中有 git 用git下载 或者直接下载附件1 源码 然后打开api php API Application Programm

随机推荐

  • 使用selenium+Edge进行浏览器不显示图片操作(屏蔽图片)

    使用Edge不加载图片进行 from msedge selenium tools import Edge EdgeOptions Edge options EdgeOptions 很关键的一步 只有为True才能进行ADD Edge opt
  • LeetCode 1143. 最长公共子序列(C++)

    题目地址 力扣 题目难度 Medium 涉及知识点 动态规划 字符串匹配 分析 由于子序列不同于子串 子串必须要连续 而子序列可以不连续 假设最长子序列长度为k 那么我们如果要通过遍历的方法来暴力求解 其时间复杂度至少为O 这肯定是无法接受
  • 【华为OD机试 2023】最左侧冗余覆盖子串(C++ Java JavaScript Python)

    华为od机试题库 华为OD机试2022 2023 C Java JS Py https blog csdn net banxia frontend category 12225173 html 华为OD机试2023最新题库 更新中 C Ja
  • (fastjson)java 如何将String(字符串)与JSON互转

    一 导入依赖
  • Apple的示例SpeakHere不能运行解决

    From your error message Application windows are expected to have a root view controller at the end of application launch
  • 论文写作记录

    论文画图 在MATLAB中导出600dpi图像 导出设置dpi后 导出tif格式的图片 直接重命名为jpg格式
  • 从分层架构到微服务架构(五)之服务化架构

    从分层架构到微服务架构 是一系列介绍 Fundamentals of Software Architecture 中提到的8种架构模式的文章 这里不会事无巨细地介绍所有的细节 而是会挑选其中关键内容 更多详情请阅读原书 往期精彩 从分层架构
  • 静态的main方法为啥可以访问非静态成员

    首先第一点 静态方法中可以创建动态变量和方法 第二点 对象属于动态的 第三点 动态的可以调用调用静态的 综上 所以要在静态方法里面调用动态参数和动态的方法就可以通过创建对象来实现调用动态参数和动态的方法 https www bilibili
  • SpringBoot如何使用JDBC操作数据库呢?

    转自 SpringBoot如何使用JDBC操作数据库呢 下文笔者讲述SpringBoot中使用jdbc操作数据库的方法分享 如下所示 实现思路 1 引入相应的jar包 2 在application yml配置相应的数据库连接信息及其它属性
  • Qt 平台在windows下配置CGAL

    首先我用的平台和库的版本是 Qt Creator 2 5 0 Qt 4 8 2 CGAL 4 1 Boost1 15 CMake2 8 8 一 名词解释 1 CGAL Computational Geometry Algorithm Lib
  • 转】PPT带备注演示(只有讲解者看到备注)[转载]

    带备注演示 讲解者可以看到备注 观众看不到 想实现PPT带备注的演示吗 这种方式只有讲解者自己能够看到备注内容 而观 看PPT演示的人看不见 如下 图所示 要实现这种放映方式只需要简单的两步 1 第一步设置多显示器 在Windows XP中
  • 利用RMI实现在多台服务器之间的资源共享

    RMI Remote Method Invocation RMI是分布式对象软件包 它简化了在多台计算机上的JAVA应用之间的通信 JDK1 2以上都支持这个功能 有了RMI就可以实现不同服务器之间的通信 也就是多个JVM Java Vir
  • Lumerical学习之代码实现材料颜色与透明度的改变

    为了在仿真设计的时候让器件显得更有层次感 方便判断器件结构的各个部位 需要给材料设置合理的颜色和透明度 虽然可以在菜单栏的Material中直接调整材料颜色 但若是代码实现的话一方面可以重复利用 避免换个工程就在菜单栏重新设置 一方面也是给
  • 算法,CS学习,嵌入式学习,算法刷图,推荐资料,直接下载

    目录 附 算法代码库 附 CS 综合学习类 附 嵌入式 综合学习类 附 算法刷题总结 数据结构与算法简述和CS综述整理 本文非基础的教程 本文会列出大量学习和参考网站 老惯例 一个文章是一个集大成 本文借助了语音输入 PC 版 讯飞输入法
  • Spring Boot(二)配置一个阿里云的镜像

    1 新建项目 从中央仓库下载 太慢了 配置一个阿里云的镜像 1 从maven官网中下载apache maven 3 6 3 2 配置环境变量 添加path 3 验证 4 配置localRepository 新建文件夹 repo 用来存放从中
  • jQuery empty() VS remove()

    empty 和 remove的区别 empty remove empty empty 是移除被选元素的所有子节点 不包括自身 例子
  • c++派生类构造顺序

    1 整体构造顺序 前面我们提到过 一个类在构造的时候 先会构造其成员变量 在调用自身的构造函数 对于派生类来说 除了可能有成员变量 还可能有多个基类 在初始化派生类对象时 其构造函数要负责基类与基类成员对象的构造 还要负责自己成员对象的构造
  • 二叉树基本操作

    定义结构体 typedef int BTDatatype typedef struct BinaryTreeNode struct BinaryTreeNode left struct BinaryTreeNode right BTData
  • 分布式协议与算法——Raft算法

    目录 Raft算法 领导者选举 有哪些成员身份 领导者选举流程 选举细节 节点之间如何通信 什么是任期 选举有哪写规则 随机超时时间是什么 小结 日志复制 如何理解日志 如何复制日志 如何实现日志的一致 小结 节点成员变更 成员变更的问题
  • QCefView(1)—— CMAKE项目、库文件生成和项目测试

    目录 下载资源 说明文档 Quick Start with Qt Cef https tishion github io QCefView CMAKE生成 sln项目文件 库文件编译和测试项目编译运行 测试QCefView自带的项目QCef