当前位置:  编程技术>综合
本页文章导读:
    ▪QT 加载WebView时出的错误      初次使用QWebKit加载网页时,编译一直过不去,会出现下面错误: 错误:undefined reference to `_imp___ZN8QWebViewC1EP7QWidget' 错误:undefined reference to `_imp___ZN8QWebView4loadERK4QUrl' 错误:undefined reference to `_imp___Z.........
    ▪cocos2d-x 菜鸟实习生学习篇(八) 菜单坐标      space_Menu->setPosition(CCPointZero); 转眼又是一周过去了,元旦后的连续八天上班并没有给自己带来太大的影响。昨晚一直关注南方周末报的那个事件。早上一看。转发的微博几乎都被删了。.........
    ▪Gradle多项目构建应用         随着信息化的快速发展,IT项目变得越来越复杂,通常都是由多个子系统共同协作完成。对于这种多系统、多项目的情况,很多构建工具都已经提供了不错的支持,像maven、ant。Gradle除了借.........

[1]QT 加载WebView时出的错误
    来源: 互联网  发布时间: 2013-11-07

初次使用QWebKit加载网页时,编译一直过不去,会出现下面错误:

错误:undefined reference to `_imp___ZN8QWebViewC1EP7QWidget'

错误:undefined reference to `_imp___ZN8QWebView4loadERK4QUrl'

错误:undefined reference to `_imp___ZN8QWebViewD1Ev'

错误:undefined reference to `_imp___ZN8QWebViewD1Ev'

找了好久原来在工程文件中应该加入“QT +=  webkit”.

作者:aile770339804 发表于2013-1-7 9:06:03 原文链接
阅读:29 评论:0 查看评论

    
[2]cocos2d-x 菜鸟实习生学习篇(八) 菜单坐标
    来源: 互联网  发布时间: 2013-11-07

space_Menu->setPosition(CCPointZero);

转眼又是一周过去了,元旦后的连续八天上班并没有给自己带来太大的影响。昨晚一直关注南方周末报的那个事件。早上一看。转发的微博几乎都被删了。可能很多人都不知道这个事,或者说是不想关注。

最大的悲剧不是坏人的嚣张,而是好人的过度沉默--马丁.路德.金


这篇博客其实应该算是笔记吧,没多少技术含量,不过第一次添加菜单的时候确实被这坐标搞的够呛。


	CCMenuItemImage *building = CCMenuItemImage::create("feng1.png","feng2.png",this,menu_selector(FengDi::callFarming));
	building->setAnchorPoint(CCPointZero);//这里设置它的锚点为(0,0)
	building->setPosition(ccp(-10,225));//这个设置这个菜单的坐标!注意!这个坐标就是菜单的真实显示坐标
	building->setScale(0.5f);

	CCMenu* space_Menu = CCMenu::create(building,NULL);//将上面创建的菜单添加进去。相当于注册吧
	this->addChild(space_Menu,2);
	space_Menu->setPosition(CCPointZero);//这里要将它的坐标设置为0,这样上面菜单的坐标才有效
	

作者:start530 发表于2013-1-7 9:04:49 原文链接
阅读:37 评论:0 查看评论

    
[3]Gradle多项目构建应用
    来源:    发布时间: 2013-11-07

 

随着信息化的快速发展,IT项目变得越来越复杂,通常都是由多个子系统共同协作完成。对于这种多系统、多项目的情况,很多构建工具都已经提供了不错的支持,像maven、ant。Gradle除了借鉴了ant或者maven的继承的方式定义子项目,也提供了一种更为方便的集中配置的方式,大大减少了构建带来的复杂度。除此之外,Gradle还提供了清晰的Project树模型来映射多项目的组织结构。下面,让我们了解一下如何使用Gradle构建多项目。

 

 

1. 多项目定义及结构

 

 在Gradle中,使用文件settings.gradle定义当前项目的子项目,格式如下所示: 

 

include 'sub-project1', 'sub-project2', 'sub-project3',

它表示在当前的项目下建立三个子项目,分别为'sub-project1', 'sub-project2', 'sub-project3'。默认情况下,每个子项目的名称对应着当前操作系统目录下的一个子目录。

 

当Gradle运行时,会根据settings.gradle的配置情况,构建一个单根节点的项目树。其中的每个子节点代表一个项目(Project),每个项目都有一个唯一的路径表示它在当前树中的位置,路径的定义方式类似:

 

Root:<Level1-子节点>:<Level2-子节点>:<Level3-子节点>

也可以简写成“:<Level1-子节点>:<Level2-子节点>:<Level3-子节点>”。借助这种路径的定义方式,我们可以在build.gradle去访问不同的子项目。另外,对于单项目,实际上是一种特殊的、只存在根节点,没有子节点的项目树。

 

例如,我们有个产品A,包括以下几个组件core,web,mobile。分别代表"核心逻辑"、"网站"、“手机客户端”。 因为每个组件是独立的部分,这个时候最好我们能定义多个子项目,让每个子项目分别管理自己的构建。于是我们可以这样定义A/settings.gradle

 

include 'core', 'web', 'mobile'

按照之前描述的,core组件对应A/core目录,web组件对应A/web目录,mobile组件对应A/mobile目录。接下来,我们就可以在每个组件内部,定义build.gradle负责管理当前组件的构建。

 

Gradle提供了一个内建的task 'gradle projects',可以 帮助我们查看当前项目所包含的子项目,下面让我们看看gradle projects的输出结果:

 

$ gradle projects

:projects

------------------------------------------------------------

Root project

------------------------------------------------------------

Root project 'A'

+--- Project ':core'

+--- Project ':mobile'

\--- Project ':web

结果一目了然,首先是Root级别的项目A,然后是A下面的子项目'core', 'mobile', 'mobile'

 

最终的文件以及目录结构如下所示:

 

A
   --settings.gradle
   --build.gradle
   --core
     --build.gradle
   --web
      --build.gradle
   --mobile
      --build.gradle
 

如果你不喜欢这种默认的结构,也可以按照如下方式定义子项目的名称和物理目录结构:

 

include(':core)
project(':core').projectDir = new File(settingsDir, 'core-xxx') 

include(':web)
project(':web').projectDir = new File(settingsDir, 'web-xxx') 

include(':mobile)
project(':mobile').projectDir = new File(settingsDir, 'mobile-xxx') 
 

在这个例子中,子项目core实际上对应的物理目录为A/core-xxx,web实际上对应的是A/web-xxx,mobile也类似。

 

虽然我们更改了子项目的物理目录结构,不过由于我们在build.gradle中使用的是类似 “ :<SubProject>”的方式访问对应的子项目,所以目录结构的改变,对我们Gradle的构建脚本并不会产生影响。

 

接下来,考虑一个更复杂的情况,随着产品的发展,mobile这个组件慢慢的划分成了Android和IOS两个部分,这时我们只需要在目录A/mobile下定义新的settings.gradle,并加入如下部分:

 

include 'android', 'ios'

现在,mobile组件下将存在两个新的子项目 "android"和"ios"

 

于是,这时候'gradle projects'的目录结构就变成  http://sz.aaafaipiao.com/ 

 

A
   --settings.gradle
   --core
      --build.gradle
   --web
      --build.gradle
   --mobile
      --settings.gradle
      --ios
        --build.gradle
      --android
        --build.gradle
 

2. 多项目的集中配置

 

对于大多数构建工具,对于子项目的配置,都是基于继承的方式。Gradle除了提供继承的方式来设置子项目,还提供了另外一种集中的配置方式,方便我们统一管理子项目的信息。下面看一个例子,打开A/build.gradle,输入如下部分:

allprojects {
    task hello << {task -> println "I'm $task.project.name" }
}
subprojects {
    hello << {println "- I am the sub project of A"}
}
project(':core').hello << {
      println "- I'm the core component and provide service for other parts."
}
 

对于上面所示的代码,已经很表意了:

 

allprojects{xxx}  这段代码表示,对于所有的project,Gradle都将定义一个名称是hello的Task { println "I'm $task.project.name"} 。

 

subprojects{xxxx}的这段代码表示,对于所有的子project,将在名称为hello的Task上追加Action {println "- I am the sub project of A"}

 

注意:关于Task和Action的关系,请看我之前写的本系列的第一部分。

 

project(':core')的这段代码表示,对于名称为core的project,将在名称为hello的Task上追加Action { println "- I'm the core component and provide service for other parts." }

 

 

3. 多项目的Task执行

 

之前我们已经了解了多项目的结构以及如何通过路径去访问子项目。现在让我们看看如何使用Gradle来执行多项目。

 

在Gradle中,当在当前项目上执行gradle <Task>时,gradle会遍历当前项目以及其所有的子项目,依次执行所有的同名Task,注意:子项目的遍历顺序并不是按照setting.gradle中的定义顺序,而是按照子项目的首字母排列顺序。

 

基于刚才的例子,如果我们在根目录下,执行gradle hello,那么所有子项目的“hello” Task都会被执行。如果我们在mobile目录下执行gradle hello,那么mobile、android以及IOS的“hello” Task都会被执行。关于该例子的运行结果,这里就不贴出来了。大家如果有兴趣的话可以试试。

 

4. 总结

这篇文章主要描述了使用Gradle管理多项目的知识。相比Ant或者Maven,Gradle提供了更灵活的配置方式。更重要的是,Gradle还提供了很多内建的Task帮助我们查看或者管理项目。这次就先聊到这里,下次我们来看看Gradle的生命周期。

 

 

 

作者:唐山

 

 

 



已有 0 人发表留言,猛击->>这里<<-参与讨论


ITeye推荐
  • —软件人才免语言低担保 赴美带薪读研!—




    
最新技术文章:
▪error while loading shared libraries的解決方法    ▪版本控制的极佳实践    ▪安装多个jdk,多个tomcat版本的冲突问题
▪简单选择排序算法    ▪国外 Android资源大集合 和个人学习android收藏    ▪.NET MVC 给loading数据加 ajax 等待loading效果
▪http代理工作原理(3)    ▪关注细节-TWaver Android    ▪Spring怎样把Bean实例暴露出来?
▪java写入excel2007的操作    ▪http代理工作原理(1)    ▪浅谈三层架构
▪http代理工作原理(2)    ▪解析三层架构……如何分层?    ▪linux PS命令
▪secureMRT Linux命令汉字出现乱码    ▪把C++类成员方法直接作为线程回调函数    ▪weak-and算法原理演示(wand)
▪53个要点提高PHP编程效率    ▪linux僵尸进程    ▪java 序列化到mysql数据库中
▪利用ndk编译ffmpeg    ▪活用CSS巧妙解决超长文本内容显示问题    ▪通过DBMS_RANDOM得到随机
▪CodeSmith 使用教程(8): CodeTemplate对象    ▪android4.0 进程回收机制    ▪仿天猫首页-产品分类
▪从Samples中入门IOS开发(四)------ 基于socket的...    ▪工作趣事 之 重装服务器后的网站不能正常访...    ▪java序列化学习笔记
▪Office 2010下VBA Addressof的应用    ▪一起来学ASP.NET Ajax(二)之初识ASP.NET Ajax    ▪更改CentOS yum 源为163的源
▪ORACLE 常用表达式    ▪记录一下,AS3反射功能的实现方法    ▪u盘文件系统问题
▪java设计模式-观察者模式初探    ▪MANIFEST.MF格式总结    ▪Android 4.2 Wifi Display核心分析 (一)
▪Perl 正则表达式 记忆方法    ▪.NET MVC 给loading数据加 ajax 等待laoding效果    ▪java 类之访问权限
▪extjs在myeclipse提示    ▪xml不提示问题    ▪Android应用程序运行的性能设计
▪100个windows平台C++开发错误之七编程    ▪串口转以太网模块WIZ140SR/WIZ145SR 数据手册(版...    ▪初识XML(三)Schema iis7站长之家
▪运行skyeye缺少libbfd-2.18.50.0.2.20071001.so问题    ▪sharepoint 2010 使用sharepoint脚本STSNavigate方法实...    ▪让javascript显原型!
▪kohana基本安装配置    ▪MVVM开发模式实例解析    ▪sharepoint 2010 设置pdf文件在浏览器中访问
▪spring+hibernate+事务    ▪MyEclipse中文乱码,编码格式设置,文件编码格...    ▪struts+spring+hibernate用jquery实现数据分页异步加...
▪windows平台c++开发"麻烦"总结    ▪Android Wifi几点    ▪Myeclipse中JDBC连接池的配置
▪优化后的冒泡排序算法    ▪elasticsearch RESTful搜索引擎-(java jest 使用[入门])...    ▪MyEclipse下安装SVN插件SubEclipse的方法
▪100个windows平台C++开发错误之七编程    ▪串口转以太网模块WIZ140SR/WIZ145SR 数据手册(版...    ▪初识XML(三)Schema
▪Deep Copy VS Shallow Copy    ▪iphone游戏开发之cocos2d (七) 自定义精灵类,实...    ▪100个windows平台C++开发错误之八编程
▪C++程序的内存布局    ▪将不确定变为确定系列~Linq的批量操作靠的住...    ▪DIV始终保持在浏览器中央,兼容各浏览器版本
▪Activity生命周期管理之三——Stopping或者Restarti...    ▪《C语言参悟之旅》-读书笔记(八)    ▪C++函数参数小结
▪android Content Provider详解九    ▪简单的图片无缝滚动效果    ▪required artifact is missing.
▪c++编程风格----读书笔记(1)    ▪codeforces round 160    ▪【Visual C++】游戏开发笔记四十 浅墨DirectX教程...
▪【D3D11游戏编程】学习笔记十八:模板缓冲区...    ▪codeforces 70D 动态凸包    ▪c++编程风格----读书笔记(2)
▪Android窗口管理服务WindowManagerService计算Activity...    ▪keytool 错误: java.io.FileNotFoundException: MyAndroidKey....    ▪《HTTP权威指南》读书笔记---缓存
▪markdown    ▪[设计模式]总结    ▪网站用户行为分析在用户市场领域的应用
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3