mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-04 04:40:56 -06:00
source_group: Improved generated filters tests
This commit is contained in:
3
Tests/RunCMake/VS10Project/Dir/DirNested/foo_nested.cpp
Normal file
3
Tests/RunCMake/VS10Project/Dir/DirNested/foo_nested.cpp
Normal file
@@ -0,0 +1,3 @@
|
||||
void foo()
|
||||
{
|
||||
}
|
||||
3
Tests/RunCMake/VS10Project/Dir/foo.cpp
Normal file
3
Tests/RunCMake/VS10Project/Dir/foo.cpp
Normal file
@@ -0,0 +1,3 @@
|
||||
void foo()
|
||||
{
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
void foo()
|
||||
{
|
||||
}
|
||||
3
Tests/RunCMake/VS10Project/Prefixed/bar.cpp
Normal file
3
Tests/RunCMake/VS10Project/Prefixed/bar.cpp
Normal file
@@ -0,0 +1,3 @@
|
||||
void bar()
|
||||
{
|
||||
}
|
||||
@@ -5,6 +5,7 @@ run_cmake(VsCSharpCompilerOpts)
|
||||
run_cmake(ExplicitCMakeLists)
|
||||
run_cmake(RuntimeLibrary)
|
||||
run_cmake(SourceGroupCMakeLists)
|
||||
run_cmake(SourceGroupTreeCMakeLists)
|
||||
|
||||
run_cmake(VsConfigurationType)
|
||||
run_cmake(VsTargetsFileReferences)
|
||||
|
||||
@@ -4,30 +4,8 @@ if(NOT EXISTS "${vcFiltersFile}")
|
||||
return()
|
||||
endif()
|
||||
|
||||
set(foundFileFilter 0)
|
||||
set(foundFilter 0)
|
||||
file(STRINGS "${vcFiltersFile}" lines)
|
||||
foreach(line IN LISTS lines)
|
||||
if(line MATCHES "<Filter>CMakeListsSourceGroup</Filter>")
|
||||
set(rule "${CMAKE_MATCH_1}")
|
||||
if(foundFileFilter)
|
||||
set(RunCMake_TEST_FAILED "Multiple files listed with filter for CMakeListsSourceGroup.")
|
||||
return()
|
||||
endif()
|
||||
set(foundFileFilter 1)
|
||||
endif()
|
||||
if(line MATCHES "<Filter.*Include=\"CMakeListsSourceGroup\"")
|
||||
set(rule "${CMAKE_MATCH_1}")
|
||||
if(foundFilter)
|
||||
set(RunCMake_TEST_FAILED "Multiple copies of CMakeListsSourceGroup filter listed.")
|
||||
return()
|
||||
endif()
|
||||
set(foundFilter 1)
|
||||
endif()
|
||||
endforeach()
|
||||
if(NOT foundFileFilter)
|
||||
set(RunCMake_TEST_FAILED "File filter for CMakeListsSourceGroup not found.")
|
||||
endif()
|
||||
if(NOT foundFilter)
|
||||
set(RunCMake_TEST_FAILED "Filter CMakeListsSourceGroup not found.")
|
||||
endif()
|
||||
|
||||
include(${RunCMake_TEST_SOURCE_DIR}/SourceGroupHelpers.cmake)
|
||||
|
||||
find_source_group("${lines}" CMakeListsSourceGroup)
|
||||
|
||||
35
Tests/RunCMake/VS10Project/SourceGroupHelpers.cmake
Normal file
35
Tests/RunCMake/VS10Project/SourceGroupHelpers.cmake
Normal file
@@ -0,0 +1,35 @@
|
||||
function(find_source_group LINES NAME)
|
||||
set(foundFileFilter 0)
|
||||
set(foundFilter 0)
|
||||
foreach(line IN LISTS LINES)
|
||||
if(line MATCHES "<Filter>${NAME}</Filter>")
|
||||
if(foundFileFilter)
|
||||
set(RunCMake_TEST_FAILED "Multiple files listed with filter for ${NAME}." PARENT_SCOPE)
|
||||
set(FILTER_FOUND 0 PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
set(foundFileFilter 1)
|
||||
endif()
|
||||
if(line MATCHES "<Filter.*Include=\"${NAME}\"")
|
||||
if(foundFilter)
|
||||
set(RunCMake_TEST_FAILED "Multiple copies of ${NAME} filter listed." PARENT_SCOPE)
|
||||
set(FILTER_FOUND 0 PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
set(foundFilter 1)
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if(NOT foundFileFilter)
|
||||
set(RunCMake_TEST_FAILED "File filter for ${NAME} not found." PARENT_SCOPE)
|
||||
set(FILTER_FOUND 0 PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
if(NOT foundFilter)
|
||||
set(RunCMake_TEST_FAILED "Filter ${NAME} not found." PARENT_SCOPE)
|
||||
set(FILTER_FOUND 0 PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
|
||||
set(FILTER_FOUND 1 PARENT_SCOPE)
|
||||
endfunction()
|
||||
@@ -0,0 +1,25 @@
|
||||
cmake_policy(SET CMP0011 NEW)
|
||||
|
||||
set(vcFiltersFile "${RunCMake_TEST_BINARY_DIR}/SourceGroupTree.vcxproj.filters")
|
||||
if(NOT EXISTS "${vcFiltersFile}")
|
||||
set(RunCMake_TEST_FAILED "Filters file ${vcFiltersFile} does not exist.")
|
||||
return()
|
||||
endif()
|
||||
|
||||
file(STRINGS "${vcFiltersFile}" lines)
|
||||
|
||||
include(${RunCMake_TEST_SOURCE_DIR}/SourceGroupHelpers.cmake)
|
||||
|
||||
set(SOURCE_GROUPS_TO_FIND
|
||||
"Dir"
|
||||
"Dir\\DirNested"
|
||||
"SourcesPrefix"
|
||||
"SourcesPrefix\\PrefixedNested"
|
||||
)
|
||||
|
||||
foreach(GROUP_NAME IN LISTS ${SOURCE_GROUPS_TO_FIND})
|
||||
find_source_group("${lines}" ${GROUP_NAME})
|
||||
if(NOT ${FILTER_FOUND})
|
||||
return()
|
||||
endif()
|
||||
endforeach()
|
||||
16
Tests/RunCMake/VS10Project/SourceGroupTreeCMakeLists.cmake
Normal file
16
Tests/RunCMake/VS10Project/SourceGroupTreeCMakeLists.cmake
Normal file
@@ -0,0 +1,16 @@
|
||||
set(CMAKE_CONFIGURATION_TYPES Debug)
|
||||
|
||||
set(SRC_FILES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/Dir/foo.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/Dir/DirNested/foo_nested.cpp
|
||||
)
|
||||
|
||||
set(PREFIXED_SRC_FILES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/Prefixed/bar.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/Prefixed/PrefixedNested/bar_nested.cpp
|
||||
)
|
||||
|
||||
add_custom_target(SourceGroupTree SOURCES ${SRC_FILES} ${PREFIXED_SRC_FILES})
|
||||
|
||||
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${SRC_FILES})
|
||||
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR}/Prefixed PREFIX SourcesPrefix FILES ${PREFIXED_SRC_FILES})
|
||||
Reference in New Issue
Block a user