有没有办法从 Cmake 更改堆栈大小?
我只找到一个forum thread提到CMAKE_CXX_STACK_SIZE
,但我无法找到此命令的文档。理想情况下,该命令应该适用于 Visual Studio C ++ 和 gcc 。
答案 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_SIZE
,this 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")