Cmake изменить размер стека
Есть ли способ изменить размер стека от Cmake?
Я нашел только одну ветку форума с упоминанием CMAKE_CXX_STACK_SIZE
но я не смог найти документацию для этой команды. В идеале команда должна работать как для Visual Studio C++, так и для gcc.
0 ответов
У меня нет 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
целевое свойство, или вCMAKE_EXE_LINKER_FLAGS
...
Такую команду можно увидеть на странице, на которой есть ссылка в вашем сообщении (не уверен, что вы ее видели), а также в этой:
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:10000000")