mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-08 14:50:10 -06:00
The ${unity_source_line} variable should not normally be empty,
but it has been observed that it sometimes is due to other factors.
Rather than causing string(REPLACE) to fail due to the wrong
number of arguments, quote the variable so that the
UnityBuildPre2017 test case fails with a more appropriate
error in the block just after the usage fixed by this change.
49 lines
1.7 KiB
CMake
49 lines
1.7 KiB
CMake
set(unitybuild_c0 "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/tgt.dir/Unity/unity_0_c.c")
|
|
if(NOT EXISTS "${unitybuild_c0}")
|
|
set(RunCMake_TEST_FAILED "Generated unity source files ${unitybuild_c0} 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 "<ClCompile Include=.*/>")
|
|
set(unity_source_line ${line})
|
|
endif()
|
|
|
|
if (line MATCHES "<ClCompile Include=\"[^\"]*\">")
|
|
string(REGEX MATCH "<ClCompile Include=\"([^\"]*)\">" source_file ${line})
|
|
list(APPEND sources_list ${source_file})
|
|
endif()
|
|
|
|
if (line MATCHES "<ExcludedFromBuild.*</ExcludedFromBuild>")
|
|
list(APPEND excluded_sources_list ${source_file})
|
|
endif()
|
|
endforeach()
|
|
|
|
string(REPLACE "\\" "/" unity_source_line "${unity_source_line}")
|
|
string(FIND "${unity_source_line}" "CMakeFiles/tgt.dir/Unity/unity_0_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.")
|
|
return()
|
|
endif()
|
|
|
|
list(LENGTH sources_list number_of_sources)
|
|
if(NOT number_of_sources EQUAL 8)
|
|
set(RunCMake_TEST_FAILED "Generated project doesn't include the expect number of files.")
|
|
return()
|
|
endif()
|
|
|
|
# Exclusions for Debug|Release|MinSizeRel|RelWithDebInfo
|
|
list(LENGTH excluded_sources_list number_of_excluded_sources)
|
|
if(NOT number_of_excluded_sources EQUAL 32)
|
|
set(RunCMake_TEST_FAILED "Generated project doesn't exclude the source files for all configurations.")
|
|
return()
|
|
endif()
|