mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-01 11:22:21 -06:00
Instead of having CMake determine which files should go into each unity file, the user can now use explicitly state the mapping.
57 lines
2.1 KiB
CMake
57 lines
2.1 KiB
CMake
set(unitybuild_c0 "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/tgt.dir/Unity/unity_poolA_c.c")
|
|
if(NOT EXISTS "${unitybuild_c0}")
|
|
set(RunCMake_TEST_FAILED "Generated unity source files ${unitybuild_c0} does not exist.")
|
|
return()
|
|
endif()
|
|
|
|
set(unitybuild_c1 "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/tgt.dir/Unity/unity_poolB_c.c")
|
|
if(NOT EXISTS "${unitybuild_c1}")
|
|
set(RunCMake_TEST_FAILED "Generated unity source files ${unitybuild_c1} does not exist.")
|
|
return()
|
|
endif()
|
|
|
|
set(tgt_project "${RunCMake_TEST_BINARY_DIR}/tgt.vcxproj")
|
|
if (NOT EXISTS "${tgt_project}")
|
|
set(RunCMake_TEST_FAILED "Generated project file ${tgt_project} doesn't exist.")
|
|
return()
|
|
endif()
|
|
|
|
file(STRINGS ${tgt_project} tgt_projects_strings)
|
|
|
|
foreach(line IN LISTS tgt_projects_strings)
|
|
if (line MATCHES "<EnableUnitySupport>true</EnableUnitySupport>")
|
|
set(have_unity_support ON)
|
|
endif()
|
|
|
|
if (line MATCHES "<ClCompile Include=.*IncludeInUnityFile=\"false\" CustomUnityFile=\"true\"")
|
|
list(APPEND unity_source_lines ${line})
|
|
endif()
|
|
|
|
if (line MATCHES "<ClCompile Include=.*IncludeInUnityFile=\"true\" CustomUnityFile=\"true\"")
|
|
list(APPEND sources_list ${line})
|
|
endif()
|
|
endforeach()
|
|
|
|
if (NOT have_unity_support)
|
|
set(RunCMake_TEST_FAILED "Generated project should include the <EnableUnitySupport> block.")
|
|
return()
|
|
endif()
|
|
|
|
string(REPLACE "\\" "/" unity_source_lines "${unity_source_lines}")
|
|
string(FIND "${unity_source_lines}" "CMakeFiles/tgt.dir/Unity/unity_poolA_c.c" unity_source_file_position)
|
|
if (unity_source_file_position EQUAL "-1")
|
|
set(RunCMake_TEST_FAILED "Generated project should include the generated unity source file 'poolA'.")
|
|
return()
|
|
endif()
|
|
string(FIND "${unity_source_lines}" "CMakeFiles/tgt.dir/Unity/unity_poolB_c.c" unity_source_file_position)
|
|
if (unity_source_file_position EQUAL "-1")
|
|
set(RunCMake_TEST_FAILED "Generated project should include the generated unity source file 'poolB'.")
|
|
return()
|
|
endif()
|
|
|
|
list(LENGTH sources_list number_of_sources)
|
|
if(NOT number_of_sources EQUAL 7)
|
|
set(RunCMake_TEST_FAILED "Generated project doesn't include the expect number of files.")
|
|
return()
|
|
endif()
|