查看: 3798|回复: 6

osg或者osgEarth编译路径问题

[复制链接]

该用户从未签到

发表于 2010-8-22 09:56:18 | 显示全部楼层 |阅读模式
本帖最后由 hello! 于 2010-8-22 13:55 编辑

使用osg或者osgEarth之类利用cmake处理的工程常常碰到这样的情况,就是工程常常莫名其妙的无法编译了,之前对工程路径也没有更改过,说是找不到路径,似乎它能自己改动一些设置似的。
例如:
1>------ 已启动生成: 项目: osgEarth, 配置: Debug Win32 ------
1>Building Custom Rule E:/osg root/osgearth/src/osgEarth/CMakeLists.txt
1>系统找不到指定的路径。
1> project : error PRJ0019: 工具从"Building Custom Rule E:/osg root/osgearth/src/osgEarth/CMakeLists.txt"
1>生成日志保存在“file://e:\osg root\osgearth\src\osgEarth\osgEarth.dir\Debug\BuildLog.htm”

但是将CmakeLists.txt从各个工程移除后就编译正常了,或者移除后再装载进来就正常了,好像原先的.sln忘记了CmakeLists.txt的位置,需要提醒它一下似的。有时候是要移除Zero_check工程,请问这是怎么回事呢?

该用户从未签到

发表于 2010-8-23 08:40:49 | 显示全部楼层
我相信您一定是做了某些令工程路径错误的事情——比如擅自移动了解决方案的位置,等等。正如osg-users上J-S所说的,我也从未遇到过您这种问题~~

该用户从未签到

 楼主| 发表于 2010-8-23 21:51:45 | 显示全部楼层
本帖最后由 hello! 于 2010-8-23 21:54 编辑

情况是这样的,例如osgOcean,当第一次编译成功后,再次运行oceanExample时,可能报错:
1>------ 已启动生成: 项目: ZERO_CHECK, 配置: Debug Win32 ------
1>Checking Build System
1>系统找不到指定的路径。
1>  project : error PRJ0019: 工具从"Checking Build System"
1>生成日志保存在“file://e:\osg root\osgocean\osgOcean\ZERO_CHECK.dir\Debug\BuildLog.htm”
1>ZERO_CHECK - 1 个错误,0 个警告
========== 生成: 0 已成功, 1 已失败, 2 最新, 0 已跳过 ==========
就是解决方案首先生成ZERO_CHECK,可是发现其路径有误。请看图1,其中ZERO_CHECK下的两个文件:
generate.stamp.rule和ZERO_CHECK文件(红色方框内)在我的硬盘上并不存在,所以才会路径报错。而如果将整个ZERO_CHECK(绿色方框内)移除,再运行oceanExample时就可以了。
既然ZERO_CHECK(绿色方框内)内的generate.stamp.rule和ZERO_CHECK文件(红色方框)不存在,怎么工程内会有这两个文件呢,而第一次编译却顺利通过了又是什么原因?谢谢
而osgOcean自从编译好了我就没有移动过它了。
fig1.jpg

该用户从未签到

发表于 2010-8-24 08:18:36 | 显示全部楼层
无论osgOcean,osgEarth还是别的什么,都只需要按照下面的步骤来执行:生成ALL BUILD工程,没有错误的话,再生成INSTALL工程——这样无论反复编译多少次都是顺利完成的,从未见过您说的情况。

不知您的CMake版本是否太低?请使用2.8以上的版本

该用户从未签到

 楼主| 发表于 2010-8-24 22:04:21 | 显示全部楼层
本帖最后由 hello! 于 2010-8-24 22:13 编辑

奥,那么我以后试试。我每次是启动VS自己的“生成”中的“批生成”,然后其中选择release和debug进行生成(图1),没有采用您说的“生成ALL BUILD工程,没有错误的话,再生成INSTALL工程”,我不知道是否是这个原因导致的。
而在类似openscenegraph.sln中,见图2,ALL_BUILD工程中的一个子文件ALL_BUILD(图中红色方框)并不存在,路径显示其无法找到,而在我的硬盘上也无此文件,这是怎么回事呢?本人使用Cmake2.8.1版本,谢谢。
fig1.jpg
fig2.jpg

该用户从未签到

发表于 2010-8-25 10:44:26 | 显示全部楼层
没有采用您说的“生成ALL BUILD工程,没有错误的话,再生成INSTALL工程
这是标准的方式,请您尽量按照标准方式来进行工程的生成;否则的话,由于CMake生成的解决方案中会包含一些测试性的子工程(它们并没有包含在ALL_BUILD中),往往会导致编译不通过;即使能够通过,由于您一直在做重复的事情(ALL_BUILD已经包含了所有需要编译的工程了,Batch Build会导致它们被重复检查),将使得编译所需时间成倍增长

至于您给出的错误界面,我想这恐怕充分说明了您曾经移动过整个工程的路径,或者改动过文件的位置……

该用户从未签到

 楼主| 发表于 2010-8-26 07:10:17 | 显示全部楼层
非常感谢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表