Chinaunix首页 | 论坛 | 博客
  • 博客访问: 108548
  • 博文数量: 13
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 195
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-23 13:16
个人简介

数据库领域专心吃草

文章分类

全部博文(13)

文章存档

2015年(1)

2014年(4)

2013年(8)

我的朋友

分类: C/C++

2014-01-15 12:01:27

    最近在使用CMAKE进行跨平台编译测试,在linux上编译没错,但是在windows上使用cmake构建VS项目工程的时候出现错误:

fatal error C1060: compiler is out of heap space

   错误的意思是堆栈内存不足,但是我的工程项目比较小,没有很深的递归程序块。所以不可能会耗尽编译器申请的内存,在cmake中打印编译参数:
MESSAGE(STATUS ${CMAKE_C_FLAGS})
MESSAGE(STATUS ${CMAKE_CXX_FLAGS})
发现参数中有/Zm1000的编译器选项,该选项会使得C编译器去申请大约750M的内存,但是比较新的编译器已经可以自增的申请内存 了,所以该参数的意义不是很大。既然知道了错误原因,那么解决该问题就比较容易 了,只需要删除或者修改该命令行参数就行:

点击(此处)折叠或打开

  1. PROJECT(projectname)#注意,后面的脚本一定要放在PROJECT之后,不然会出错
  2. STRING(REPLACE "/Zm1000" "/Zm100" CMAKE_C_FLAGS ${CMAKE_C_FLAGS})
  3. STRING(REPLACE "/Zm1000" "/Zm100" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
如果VS项目构建成功了,但是在编译的时候依然报堆栈内存不足的错误,那么需要在项目属性中修改编译的命令行参数(Zm),如图:



/Zm参数应该是cmake的一个BUG,期待在后续的发行版本中解决这个问题

阅读(6615) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~