vs2017下cmake 3.12修改默认栈大小

        最近在windows上调试一个dll库时,调用库里一个函数一直闪崩,查看日志和堆栈信息发现崩溃的地方都很奇怪,都是函数return之后崩掉的,怀疑是函数里各种栈变量加起来大小超过程序默认栈大小了,于是想要编译时修改默认栈大小再做测试。

        我的编译环境是vs2017,使用cmake进行编译处理,因此就研究如何在cmakelists.txt上添加编译时设置栈大小的变量。网上搜了一圈,包括AI都上了,各种信息都有,也是天下一大抄抄来抄去,什么add_link_options、target_link_options、add_compile_options、CMAKE_EXE_LINKER_FLAGS、CMAKE_SHARED_LINKER_FLAGS、CMAKE_MSVC_RUNTIME_LIBRARY等等,啥说法都有。最终验证下来要么就是要求高版本cmake,要么就是linux上gcc才有效,要么就是完全没用的,浪费很多时间。最后没办法还是去看cmake社区的使用说明吧,虽然是英文的但是硬着头皮看还是能看点东西出来,上面就建议说老版本cmake还是使用LINK_FLAGS属性来设置链接时的参数,于是在cmakelists.txt上添加了几行:

if(MSVC)
        set_target_properties(mytarget PROPERTIES LINK_FLAGS "${LINK_FLAGS} /STACK:67108864")
endif()

上面是设置栈大小为64MB,专门针对MSVC编译环境,如果是其它环境需要修改对应环境的参数。重新运行cmake编译后,终于生效了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值