Skip to content

Commit b5afc1f

Browse files
jll63claude
andcommitted
Fix CMake test flags: always apply MSVC /Zm500 heap flag
Separate MSVC compiler heap size flags from warning flags. The /Zm500 flag now always applies to MSVC test builds (not tied to WARNINGS_AS_ERRORS), ensuring C1060 'compiler out of heap space' is prevented in all builds, including CI. Previously, test flags were set but never applied to targets. Now they are applied via target_compile_options() to each test executable. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
1 parent 33ccd6f commit b5afc1f

1 file changed

Lines changed: 30 additions & 8 deletions

File tree

test/CMakeLists.txt

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,24 +20,29 @@ if (NOT TARGET tests)
2020
set_property(TARGET tests PROPERTY FOLDER Dependencies)
2121
endif()
2222

23-
# Replicate error flags from Jamfile
23+
# MSVC compiler heap size (always applied to avoid C1060 "out of heap space")
24+
if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR CMAKE_CXX_COMPILER_FRONTEND_VARIANT MATCHES "MSVC")
25+
set(BOOST_OPENMETHOD_MSVC_HEAP_FLAGS "/Zm500")
26+
endif()
27+
28+
# Warning flags (applied only when WARNINGS_AS_ERRORS is enabled)
2429
if (BOOST_OPENMETHOD_WARNINGS_AS_ERRORS)
2530
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
2631
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 7)
27-
set(BOOST_OPENMETHOD_TEST_FLAGS "-Wall -Werror -Wno-unused-but-set-variable -Wno-maybe-uninitialized")
32+
set(BOOST_OPENMETHOD_WARNING_FLAGS "-Wall -Werror -Wno-unused-but-set-variable -Wno-maybe-uninitialized")
2833
else()
29-
set(BOOST_OPENMETHOD_TEST_FLAGS "-Wall -Werror -Wno-unused-but-set-variable")
34+
set(BOOST_OPENMETHOD_WARNING_FLAGS "-Wall -Werror -Wno-unused-but-set-variable")
3035
endif()
3136
elseif (CMAKE_CXX_COMPILER_ID MATCHES "AppleClang")
32-
set(BOOST_OPENMETHOD_TEST_FLAGS "-Wall -Werror")
37+
set(BOOST_OPENMETHOD_WARNING_FLAGS "-Wall -Werror")
3338
elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND NOT CMAKE_CXX_COMPILER_FRONTEND_VARIANT MATCHES "MSVC")
3439
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 13)
35-
set(BOOST_OPENMETHOD_TEST_FLAGS "-Wall -Werror -Wno-unused-but-set-variable")
40+
set(BOOST_OPENMETHOD_WARNING_FLAGS "-Wall -Werror -Wno-unused-but-set-variable")
3641
else()
37-
set(BOOST_OPENMETHOD_TEST_FLAGS "-Wall -Werror")
42+
set(BOOST_OPENMETHOD_WARNING_FLAGS "-Wall -Werror")
3843
endif()
3944
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR CMAKE_CXX_COMPILER_FRONTEND_VARIANT MATCHES "MSVC")
40-
set(BOOST_OPENMETHOD_TEST_FLAGS "/W4 /WX /we4265 /wd4251 /Zm500")
45+
set(BOOST_OPENMETHOD_WARNING_FLAGS "/W4 /WX /we4265 /wd4251")
4146
endif()
4247

4348
# Print test configuration if running in CI
@@ -49,7 +54,8 @@ if (BOOST_OPENMETHOD_WARNINGS_AS_ERRORS)
4954
endif()
5055
message(STATUS "Boost.OpenMethod Tests - Platform: ${CMAKE_SYSTEM_NAME} / ${CMAKE_SYSTEM_VERSION}")
5156
message(STATUS "Boost.OpenMethod Tests - C++ standard: ${CMAKE_CXX_STANDARD}")
52-
message(STATUS "Boost.OpenMethod Tests - Test error flags: ${BOOST_OPENMETHOD_TEST_FLAGS}")
57+
message(STATUS "Boost.OpenMethod Tests - Test warning flags: ${BOOST_OPENMETHOD_WARNING_FLAGS}")
58+
message(STATUS "Boost.OpenMethod Tests - Test heap flags: ${BOOST_OPENMETHOD_MSVC_HEAP_FLAGS}")
5359
endif()
5460
endif()
5561

@@ -70,12 +76,28 @@ foreach(test_cpp ${test_cpp_files})
7076
set(test_target "boost_openmethod-${test}")
7177
add_executable(${test_target} EXCLUDE_FROM_ALL ${test_cpp})
7278
target_link_libraries(${test_target} PRIVATE Boost::openmethod Boost::unit_test_framework)
79+
# Always apply MSVC heap flags to avoid C1060 "out of heap space"
80+
if (BOOST_OPENMETHOD_MSVC_HEAP_FLAGS)
81+
target_compile_options(${test_target} PRIVATE ${BOOST_OPENMETHOD_MSVC_HEAP_FLAGS})
82+
endif()
83+
# Apply warning flags only if WARNINGS_AS_ERRORS is enabled
84+
if (BOOST_OPENMETHOD_WARNING_FLAGS)
85+
target_compile_options(${test_target} PRIVATE ${BOOST_OPENMETHOD_WARNING_FLAGS})
86+
endif()
7387
boost_openmethod_add_test(${test_target})
7488
add_dependencies(tests ${test_target})
7589
endforeach()
7690

7791
add_executable(boost_openmethod-test_mix_release_debug EXCLUDE_FROM_ALL mix_release_debug/main.cpp mix_release_debug/lib.cpp)
7892
target_link_libraries(boost_openmethod-test_mix_release_debug PRIVATE Boost::openmethod Boost::unit_test_framework)
93+
# Always apply MSVC heap flags
94+
if (BOOST_OPENMETHOD_MSVC_HEAP_FLAGS)
95+
target_compile_options(boost_openmethod-test_mix_release_debug PRIVATE ${BOOST_OPENMETHOD_MSVC_HEAP_FLAGS})
96+
endif()
97+
# Apply warning flags only if WARNINGS_AS_ERRORS is enabled
98+
if (BOOST_OPENMETHOD_WARNING_FLAGS)
99+
target_compile_options(boost_openmethod-test_mix_release_debug PRIVATE ${BOOST_OPENMETHOD_WARNING_FLAGS})
100+
endif()
79101
boost_openmethod_add_test(boost_openmethod-test_mix_release_debug)
80102
add_dependencies(tests boost_openmethod-test_mix_release_debug)
81103

0 commit comments

Comments
 (0)