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")
Другие вопросы по тегам