@@ -460,16 +460,20 @@ macro(add_fuzz_test)
460460endmacro ()
461461
462462function (add_compile_fail_test test_file)
463+ set (singleValueArgs NAME )
463464 set (multiValueArgs INCLUDE_DIRECTORIES LIBRARIES SYSTEM_LIBRARIES)
464- cmake_parse_arguments (CF "" "" "${multiValueArgs} " ${ARGN} )
465+ cmake_parse_arguments (CF "" "${singleValueArgs} " "${multiValueArgs} "
466+ ${ARGN} )
465467
466- string (REPLACE "/" "_" test_name "${test_file} " )
467- string (PREPEND test_name "EXPECT_FAIL." )
468- add_executable (${test_name} EXCLUDE_FROM_ALL ${test_file} )
468+ if (NOT CF_NAME)
469+ string (REPLACE "/" "_" CF_NAME "${test_file} " )
470+ endif ()
471+ string (PREPEND CF_NAME "EXPECT_FAIL." )
472+ add_executable (${CF_NAME} EXCLUDE_FROM_ALL ${test_file} )
469473
470- target_include_directories (${test_name } PRIVATE ${CF_INCLUDE_DIRECTORIES} )
471- target_link_libraries (${test_name } PRIVATE ${CF_LIBRARIES} )
472- target_link_libraries_system(${test_name } PRIVATE ${CF_SYSTEM_LIBRARIES} )
474+ target_include_directories (${CF_NAME } PRIVATE ${CF_INCLUDE_DIRECTORIES} )
475+ target_link_libraries (${CF_NAME } PRIVATE ${CF_LIBRARIES} )
476+ target_link_libraries_system(${CF_NAME } PRIVATE ${CF_SYSTEM_LIBRARIES} )
473477
474478 file (STRINGS ${test_file} pattern REGEX "// EXPECT: " )
475479 if (NOT pattern)
@@ -478,9 +482,8 @@ function(add_compile_fail_test test_file)
478482 string (REGEX REPLACE ".*// EXPECT: " "" pattern ${pattern} )
479483 endif ()
480484
481- add_test (NAME ${test_name}
482- COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target
483- ${test_name} )
484- set_tests_properties (${test_name} PROPERTIES PASS_REGULAR_EXPRESSION
485- "${pattern} " )
485+ add_test (NAME ${CF_NAME} COMMAND ${CMAKE_COMMAND} --build
486+ ${CMAKE_BINARY_DIR} --target ${CF_NAME} )
487+ set_tests_properties (${CF_NAME} PROPERTIES PASS_REGULAR_EXPRESSION
488+ "${pattern} " )
486489endfunction ()
0 commit comments