Cmake更改堆栈大小

时间:2018-04-04 06:33:13

标签: visual-studio gcc cmake stack stack-size

有没有办法从 Cmake 更改堆栈大小?
我只找到一个forum thread提到CMAKE_CXX_STACK_SIZE,但我无法找到此命令的文档。理想情况下,该命令应该适用于 Visual Studio C ++ gcc

1 个答案:

答案 0 :(得分:1)

目前我没有VS,但是以下三个CMake命令在MinGW / GCC上都对我有用(用您输入的<target>代替add_executable()):

target_link_libraries(<target> PRIVATE "-Wl,--stack,10000000")

OR

set_target_properties(<target> PROPERTIES LINK_FLAGS -Wl,--stack,10000000)

OR

set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--stack,10000000")

请注意,根据CMake documentation,每一个都应仅添加链接器标志,而不是替换已设置的标志。

在VS中,您似乎应该将-Wl,--stack,替换为/STACK:(在下面进行更多介绍),并使用if / else为每个编译器使用不同的命令。

关于CMAKE_CXX_STACK_SIZEthis thread,值得一读,它说命令是

  出于历史原因,在VS生成器的实现中使用

,但这不是设置堆栈大小的一流方法。相反,只需使用/STACK:target_link_libraries目标属性,或在LINK_FLAGS ...

中将CMAKE_EXE_LINKER_FLAGS ...作为链接器标志传递

这样的命令实际上可以在帖子中链接的the page(不确定是否看到)以及this one中看到:

set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:10000000")