6

有没有办法从Cmake更改堆栈大小?
我只发现一个论坛帖子提到CMAKE_CXX_STACK_SIZE,但我找不到这个命令的文档。理想情况下,该命令应该适用于Visual Studio C++gcc

4

1 回答 1

6

我目前没有 VS,但以下三个 CMake 命令都适用于 MinGW/GCC(替换<target>为您输入的内容add_executable()):

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

或者

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

或者

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

请注意,根据CMake 文档,每个都应该只添加链接器标志,而不是替换任何已经设置的标志。

在 VS 中,看起来您应该替换-Wl,--stack,/STACK:(下面将详细介绍)并使用 if/else 为每个编译器提供不同的命令。

关于CMAKE_CXX_STACK_SIZE这个值得一读的线程说命令是

由于历史原因,在 VS 生成器的实现中,但不打算作为设置堆栈大小的一流方式。而是将/STACK:... 作为链接器标志传递,使用target_link_libraries, 或LINK_FLAGS目标属性,或 in CMAKE_EXE_LINKER_FLAGS...

这样的命令实际上可以在您帖子中链接的页面上看到(不确定您是否看到它)以及这个

set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:10000000")
于 2019-05-05T07:11:29.900 回答