BlocklyGame (编译方法)分析

2023-11-08

先列出以下几个位置:(本人用的是linux)

BlocklyGame源码位置

https://github.com/google/blockly-games

获取源码

git clone https://github.com/google/blockly-games
cd blockly-games-master

载编译好的BlocklyGame

https://github.com/google/blockly-games/wiki/Offline

当被编译出现问题时可以查看下面的网址,进行解决

https://github.com/google/blockly-games/issues

安装JDK,python3.5(前提安装了make,gcc等工具  )

自己可以从网上找。也可以参考https://blog.csdn.net/xiatiancc/article/details/78932848

 

懒人安装:该命令将安装一堆新包,包括gcc,g ++和make。

 sudo apt install build-essential

/********************************************************************************************************************************/

正文

makefile中一共有两个主要执行应用分别对应命令make deps, make language.

以及三个小应用make clean,make clean-languages,make clean-deps

(一)make deps的准备工作

   make deps执行的是 makefile 这个文件。 获得整个项目中所需要的第三方依赖(如Colsure,Blockly等)

   进入主文件blockly-games-master,即文件makefile所在的目录。通过make deps,得到并构建项目所需要的依赖,比如.soy文    件所需要的Closure模板

(1)在blockly-games-master目录下,下载build文件夹

①先现在SVN(已经安装过的忽略)

apt install subversion

②下载build

svn checkout https://github.com/google/closure-library/trunk/closure/bin/build build

(2)执行  make deps命令

make deps

返回信息:

mkdir -p third-party
cd third-party; \
svn checkout https://github.com/google/closure-library/trunk/closure/bin/build build; \
wget -N https://dl.google.com/closure-templates/closure-templates-for-javascript-latest.zip; \
unzip -o closure-templates-for-javascript-latest.zip SoyToJsSrcCompiler.jar; \
unzip -o closure-templates-for-javascript-latest.zip -d ../appengine/third-party soyutils_usegoog.js; \
wget -N https://dl.google.com/closure-templates/closure-templates-msg-extractor-latest.zip; \
unzip -o closure-templates-msg-extractor-latest.zip SoyMsgExtractor.jar; \
wget -N https://dl.google.com/closure-compiler/compiler-latest.zip; \
unzip -o compiler-latest.zip -x COPYING README.md; \
mv -f closure-compiler-v*.jar closure-compiler.jar; \
chmod +x build/closurebuilder.py

…………………………

其主要的意思:

1.1.1、在同级目录,(即项目的根目录)创建第三方模块文件夹third-party 。

1.1.2、svn checkout https://github.com/google/closure-library/trunk/closure/bin/build build;使用svn下载。暂且不明白svn checkout命令

1.1.3、wget -N https://dl.google.com/closure-templates/closure-templates-for-javascript-latest.zip; 通过wget下载Closure模板

1.1.4、unzip -o closure-templates-for-javascript-latest.zip SoyToJsSrcCompiler.jar;将SoyToJsSrcCompiler.jar解压到当前目录

1.1.5、unzip -o closure-templates-for-javascript-latest.zip -d ../appengine/third-party soyutils_usegoog.js; 将soyutils_usegoog.js解压到appengine/third-party目录下。

1.1.6、wget -N https://dl.google.com/closure-templates/closure-templates-msg-extractor-latest.zip; 下载closure-templates-msg-extractor-latest.zip

1.1.7、unzip -o closure-templates-msg-extractor-latest.zip SoyMsgExtractor.jar; 解压出SoyMsgExtractor.jar

1.1.8、wget -N https://dl.google.com/closure-compiler/compiler-latest.zip;下载compiler-latest.zip;

1.1.9、unzip -o compiler-latest.zip -x COPYING README.md; 解压出README.md;

1.1.10、mv -f closure-compiler-v*.jar closure-compiler.jar;将所有closure-compiler-v*.jar的文件改名为closure-compiler.jar

chmod +x build/closurebuilder.py: 修改文件权限

(3)最后在生成appengine/third-party

下载的模块有:goog、third_party_goog、ace、blockly、SoundJS、midi-js-soundfonts下的guitar、piano、banjo、choir、choir、drum、trumpet、violin、还有JS-Interpreter。

最后将blockly下的msg/messages.js删除

这些模块的作用:

goog : 提供了非常方便的前端和后端函数库,项目中主要用到了它的math下的方法。

third_party_goog : 暂且不知

ace : 暂且不知

blockly : blockly模块

SoundJS : 暂且不知

midi-js-soundfonts : 提供了一些声音文件

JS-Interpreter : 用于安全执行Blockly中的代码。

注意:到目前为止,项目已经完成所有第三方模块的加载,但是项目此时还不可以运行。只有通过make language后才能运行项目

(二)make language

 

如果你想单独对BlocklyGame项目下的某个子游戏进行语言编译,使用 make project-languages ,比如 make bird-en(见Makefile)

make language 主要做了三件事。

第一件事:为每个子项目创建appengine/generated/‘language’/路径

language 为你所编译的语言,比如make enlanguage 为 make  en

make  en

编译一个项目

make index-en
make puzzle-en
make maze-en
make bird-en
make turtle-en
make movie-en
make music-en
make pond-docs-en
make pond-tutor-en
make pond-duck-en
make gallery-en

 

第二件事:编译.soy模板,模板被编译为soy.js文件

第三件事: 执行build-app.py文件

!common-en : 暂且不知

以make en为例:

执行make en后会生成四个文件,

1、soy.js 第二件事生成的js文件

2、msg.js 第三件事生产的js文件

3、compressed.js 第三件事生产的js文件

4、uncompressed.js 第三件事生产的js文件

 

(三)make clean-deps: 清除依赖

(四)make clean-languages : 清除相关语言编译生成的文件(将appengine和子项目下的generated文件夹删除)

(五)make clean: make clean-deps,make clean-languages (这两个命令集合)

 

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

BlocklyGame (编译方法)分析 的相关文章

  • React性能优化的手段有哪些

    1 使用纯组件 2 使用 React memo 进行组件记忆 React memo 是一个高阶组件 对 于相同的输入 不重复执行 3 如果是类组件 使用 shouldComponentUpdate 这是在重新渲染组件之前触发的其中一个生命周
  • 21. 成语接龙

    小张非常喜欢与朋友们玩成语接龙的游戏 但是作为 文化沙漠 的小张 成语的储备量有些不足 现在他的大脑中存储了m个成语 成语中的四个汉字都用一个1000000以内的正整数来表示 现在小张的同学为了考验他给出了他一个成语做开头和一个成语做结尾
  • HDFS的基础练习--新建目录

    实验 1 在HDFS的 上创建10目录 data01 data10 在浏览器上查看 2 在HDFS data03下递归创建 data05 data06 data07 递归创建 使用命令 hdfs fs mkdir p xx1 xx2 xx3
  • IDEA菜单栏不见了怎么办

    开始时候我的IDEA主菜单不见了 解决方法 打开Idea 按两次shift 并在弹出框内的搜索框里输入 view 然后往下拉 找图里的这个View 点击它 会弹出新的框 然后就 这样主菜单栏就出来了
  • SpringBoot 基础

    1 认识Spring Boot Spring 不同于一般框架 它是一个聚合的框架 通过Spring 框架可以使Java 更为便捷和系统化 Java web 中最为使用的框架为 Spring Framework Spring boot 是 S
  • python中使用apscheduler二步简单完成定时任务设置,用于自动化任务的创建,无人值守后台任务创建

    一 apscheduler的安装 首先需要安装pip 打开CMD输入pip install apscheduler 安装apscheduler模块 安装过程如下图 二 导入apscheduler包 设置参数与需要执行的脚本 coding u
  • Pytorch从0实现Transformer

    文章目录 摘要 一 构造数据 1 1 句子长度 1 2 生成句子 1 3 生成字典 1 4 得到向量化的句子 该阶段总程序 二 位置编码 2 1 计算括号内的值 2 2 得到位置编码 三 多头注意力 3 1 self mask 摘要 Wit
  • Elasticsearch笔记(七):聚合查询

    聚合框架有助于根据搜索查询提供聚合数据 聚合查询是数据库中重要的功能特性 ES作为搜索引擎兼数据库 同样提供了强大的聚合分析能力 它基于查询条件来对数据进行分桶 计算的方法 有点类似于 SQL 中的 group by 再加一些函数方法的操作
  • 高薪全栈工程师必备 Linux 基础

    https mp weixin qq com s biz MzI0MTQwMTMyOQ tempkey OTkzX0xtOTVOZkJQbjVQSnhQaWdFcU5pTXZiZ3BvRW5DaDNiaGg5MXJDdGVCSTdkSlFU
  • 【转载】TCP的seq和ack号计算方法

    seq和ack号存在于TCP报文段的首部中 seq是序号 ack是确认号 大小均为4字节 注意与大写的ACK不同 ACK是6个控制位之一 大小只有一位 仅当 ACK 1 时ack字段才有效 建立 TCP 连接后 所有报文段都必须把 ACK
  • Kotlin 集合框架

    集合概述 Kotlin 标准库提供了一整套用于管理集合的工具 集合是可变数量 可能为零 的一组条目 各种集合对于解决问题都具有重要意义 并且经常用到 集合通常包含相同类型的一些 数目也可以为零 对象 集合中的对象称为元素或条目 例如 一个系
  • Linux 网桥实现分析

    第一部份 源码框架 一 网桥原理 传统的中继器 如HUB 是一个单纯的物理层设备 它将每一个收到的数据包 在其所有的端口上广播 由接收主机来判断这个数据包是否是给自己的 这样 网络资源被极大的浪费掉了 网桥之所以不同于中继器 主要在于其除了
  • kubernetes详解

    kubernetes详解 1 kuberenetes简介 1 1什么是kubernetes 1 2 Kubernetes发展史 1 3 为什么要使用kubernetes 1 4 Kubernetes 特点 1 5 kubernetes特性
  • Class.forName()用法简介说明

    转自 Class forName 用法简介说明 下文笔者讲述Class forName 方法的功能简介说明 如下所示 class对象简介说明 class对象用于表示类 每一个类在JVM中都对应一个class对象 jvm中将使用class对象
  • Keil5 STM32 软件仿真错误

    error 65 access violation at 0x40021000 no read permission 这个错误是Keil引起的 应该是没有识别出芯片的型号 我是在RT Thread OS 仿真运行的时候发现的 这里的仿真芯片
  • ipynb转markdown

    不知道为什么ipynb里面没法显示图片 为了阅读体验 没办法只能转为markdown了 jupyter nbconvert to markdown 特征处理 ipynb
  • 8800个机器学习开源项目为你精选TOP30!

    授权自AI科技大本营 ID rgznai100 本文共图文结合 建议阅读5分钟 本文为大家带来了30个广受好评的机器学习开源项目 最近 Mybridge发布了一篇文章 对比了过去一年中机器学习领域大约8800个开源项目后 选出30个2017
  • chatGPT身份指令

    充当 Linux 终端 我想让你充当 Linux 终端 我将输入命令 您将回复终端应显示的内容 我希望您只在一个唯一的代码块内回复终端输出 而不是其他任何内容 不要写解释 除非我指示您这样做 否则不要键入命令 当我需要用英语告诉你一些事情时
  • 静态变量与静态函数

    堆与栈 1 栈区 stack 由编译器自动分配释放 存放函数的参数值 局部变量的值等 操作是类似于数据结构中的栈 2 堆区 heap 一般有程序员分配和释放 动态存储分配 分配方式类似于链表 3 全局区 static 全局变量和静态变量的存

随机推荐

  • debian ubuntu 设置DNS 永久设置 重启系统不会丢失

    debian ubuntu 设置DNS 永久设置 重启系统不会丢失 1 debian ubuntu 设置DNS 快捷步骤 2 下面是命令解释 2 1 决定系统dns的文件是 etc resolv conf 2 2 谁能最终影响 etc re
  • 封神台——Cookie伪造目标权限(存储型XSS)

    点击传送门看到的是一个留言板 我们首先要判断是否存在XSS 于是输入一串JS代码 看是否会弹出一个内容为 zkaq 的弹窗 出现了 说明存在XSS漏洞 关于XSS漏洞的科普如下 跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代
  • loadtxt()读取数据类型转换/string转换float/ValueError: could not convert string to float:

    实验数据样式 Test csv 只显示几行 0 589469 5 000059 0 480721 0 000204 0 000204 12 945284 4 999956 9 671936 0 000145 0 000145 9 70103
  • 每天一个小技巧之Bash Shell Debug

    sh x xxxx sh
  • 多态的定义及原理

    一 多态的概念和定义 1 多态的概念 多态 Polymorphism 同字面意思意为多种形态 本质就是不同对象完成同一行为产生的不同结果 2 多态的构成条件 多态是在不同继承关系的类对象 去调用同一函数 产生了不同的行为 在继承中要构成多态
  • 基于Pytorch的模型推理

    训练部分说明 假设我们现在有两个文件 first file train py 用于训练模型 second file inference py 用于推理检测 在train py文件中我们使用了定义了一个类 里面声明了我的网络模型 例如 cla
  • java 备份sqlserver部分表_SQLServer备份指定表

    先定义表类型 CREATE TYPE t bak tables AS TABLE table name VARCHAR 200 然后再定义备份过程 CREATE PROC sp bak tables tbs t bak tables REA
  • 火线精英服务器怎样可以稳定,火线精英怎么操控好速度慢威力大的斩月

    关键词 火线精英怎么操控好速度慢威力大的斩月 火线精英斩月怎么操控 火线精英怎么操控好斩月 火线精英斩月怎么用 火线精英斩月是一把新出的刀 外格炫酷 威力惊人 美中不足的是他的攻速 这地方是硬伤啊 但是 作为新一代的神器 怎样才能操控好呢
  • Intellij Idea单元测试覆盖率插件JaCoCo的使用

    JaCoCo是Java代码单元测试覆盖率工具 可以用于IDE 也可以用于Maven等构建工具 IDE 主要介绍Intellij Idea中的使用 Eclipse请查看Jacoco Eclipse简单操作 Intellij Idea用法 调整
  • PXE自动化安装CentOS 8

    安装前准备 关闭防火墙和SELINUX DHCP服务器静态IP 切勿用桥接模式 最好是NET模式而且把自动分配DHCP对勾取消 查看防火墙和seelinux是否关闭 root centos8 firewall cmd state not r
  • Qt5 的类 QPoint,QPointF(相关的方法,不会的都在)

    QPoint QPoint官网链接 简介 QPoint 类使用整数精度来定义平面中的一个点 包含的成员 我觉得你可能看不懂的成员使用的方法 1 dotProduct const QPoint const QPoint int 参数是两个点的
  • 解决 Ubuntu 和其他发行版上的 WSL2 网络无法访问的问题

    翻译于Kontext 的 Resolution for WSL2 Network Unreachable Issue on Ubuntu and Other Distros 对于我的 Ubuntu 1 2 发行版 从 WSL20 升级到 W
  • Roblox学习笔记

    概述 Roblox笔记 可能会顺便写一下Lua相关的 1 Roblox中变化整个物体 1 通过组合为Model整体变换 问题概要 Unity中 改变父物体的Transform子物体会一起变换 Roblox中 在 属性 面板中有两个与位置相关
  • 智慧PG集成开发平台pgting-cli发布了

    介绍 两周前我们发布了智能页面搭建平台 智慧PG pgting 深受用户青睐 很多用户尝试了在线开发组件 为了方便用户定制开发组件和组件共享 智慧PG设计之初就考虑了组件定制开发问题 为此 我们设计和研发了智慧PG集成工作台pgting c
  • 软件测试金融项目,在测试的时候一定要避开的一些雷区

    软件测试金融项目需要格外谨慎和专注 因为这些项目通常涉及大量的交易 用户隐私和其他敏感信息 以下是一些软件测试金融项目时需要关注的方面 1 数据保护 在测试金融项目时 必须确保用户数据和投资信息得到保护 测试人员必须确保测试环境和测试数据安
  • 【C++】[boost]::enable_shared_from_this类实例

    原来误以为可以用作单例 生命周期与应用本身同寿那种 后来参考例子后发现是智能指针管理下的实例 1 需要继承自enable shared from this 比如说 class Y public Boost enable shared fro
  • 安装使用MMDeploy(Python版)

    安装使用MMDeploy Python版 一 安装 MMDeploy python mmdeploy main tools deploy py mmdeploy main configs mmdet detection detection
  • 蓝牙的知识总结(1)

    1 SoC System on Chip 称为系统级芯片 一个产品 是一个有专用目标的集成电路 其中包含完整系统并有嵌入软件的全部内容 同时它又是一种技术 用以实现从确定系统功能开始 到软 硬件划分 并完成设计的整个过程 从狭义角度讲 它是
  • 【算法】字符串算法题——回文(学习篇)

    验证回文串 给定一个字符串 验证它是否是回文串 只考虑字母和数字字符 可以忽略字母的大小写 说明 本题中 我们将空字符串定义为有效的回文串 示例 1 输入 A man a plan a canal Panama 输出 true 解释 ama
  • BlocklyGame (编译方法)分析

    先列出以下几个位置 本人用的是linux BlocklyGame源码位置 https github com google blockly games 获取源码 git clone https github com google blockl