有没有办法从Cmake更改堆栈大小?
我只发现一个论坛帖子提到CMAKE_CXX_STACK_SIZE
,但我找不到这个命令的文档。理想情况下,该命令应该适用于Visual Studio C++和gcc。
问问题
4969 次
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
目标属性,或 inCMAKE_EXE_LINKER_FLAGS
...
这样的命令实际上可以在您帖子中链接的页面上看到(不确定您是否看到它)以及这个:
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:10000000")
于 2019-05-05T07:11:29.900 回答