mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-14 19:08:07 +08:00
VS: Test VS_SETTINGS and VS_SOURCE_SETTINGS_<tool> properties.
This commit is contained in:
@@ -31,6 +31,8 @@ run_cmake(VsDpiAwareBadParam)
|
||||
run_cmake(VsPrecompileHeaders)
|
||||
run_cmake(VsPrecompileHeadersReuseFromCompilePDBName)
|
||||
run_cmake(VsDeployEnabled)
|
||||
run_cmake(VsSettings)
|
||||
run_cmake(VsSourceSettingsTool)
|
||||
|
||||
run_cmake(VsWinRTByDefault)
|
||||
|
||||
|
23
Tests/RunCMake/VS10Project/VsSettings-check.cmake
Normal file
23
Tests/RunCMake/VS10Project/VsSettings-check.cmake
Normal file
@@ -0,0 +1,23 @@
|
||||
macro(ensure_props_set projectFile)
|
||||
if(NOT EXISTS "${projectFile}")
|
||||
set(RunCMake_TEST_FAILED "Project file ${projectFile} does not exist.")
|
||||
return()
|
||||
endif()
|
||||
|
||||
set(SettingFound FALSE)
|
||||
|
||||
file(STRINGS "${projectFile}" lines)
|
||||
foreach(line IN LISTS lines)
|
||||
if(line MATCHES "<SourceProperty1.*Debug.*>SourceProperty1Value</SourceProperty1>")
|
||||
message("SourceProperty1 setting found")
|
||||
set(SettingFound TRUE)
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if (NOT SettingFound)
|
||||
set(RunCMake_TEST_FAILED "SourceProperty1 setting was not found")
|
||||
return()
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
ensure_props_set("${RunCMake_TEST_BINARY_DIR}/foo.vcxproj")
|
5
Tests/RunCMake/VS10Project/VsSettings.cmake
Normal file
5
Tests/RunCMake/VS10Project/VsSettings.cmake
Normal file
@@ -0,0 +1,5 @@
|
||||
enable_language(CXX)
|
||||
|
||||
add_library(foo foo.cpp shader.hlsl)
|
||||
set_property(SOURCE shader.hlsl PROPERTY VS_SETTINGS
|
||||
"$<$<CONFIG:DEBUG>:SourceProperty1=SourceProperty1Value>")
|
34
Tests/RunCMake/VS10Project/VsSourceSettingsTool-check.cmake
Normal file
34
Tests/RunCMake/VS10Project/VsSourceSettingsTool-check.cmake
Normal file
@@ -0,0 +1,34 @@
|
||||
macro(ensure_props_set projectFile)
|
||||
if(NOT EXISTS "${projectFile}")
|
||||
set(RunCMake_TEST_FAILED "Project file ${projectFile} does not exist.")
|
||||
return()
|
||||
endif()
|
||||
|
||||
set(FirstSettingFound FALSE)
|
||||
set(SecondSettingFound FALSE)
|
||||
|
||||
file(STRINGS "${projectFile}" lines)
|
||||
foreach(line IN LISTS lines)
|
||||
if(line MATCHES "<TargetProperty1.*Debug.*>TargetProperty1ValueDebug</TargetProperty1>")
|
||||
if (FirstSettingFound)
|
||||
message("TargetProperty1 setting found twice")
|
||||
set(SecondSettingFound TRUE)
|
||||
else()
|
||||
message("TargetProperty1 setting found once")
|
||||
set(FirstSettingFound TRUE)
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if (NOT FirstSettingFound)
|
||||
set(RunCMake_TEST_FAILED "TargetProperty1 setting not found at all")
|
||||
return()
|
||||
endif()
|
||||
|
||||
if (NOT SecondSettingFound)
|
||||
set(RunCMake_TEST_FAILED "TargetProperty1 setting found once when it should be found twice")
|
||||
return()
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
ensure_props_set("${RunCMake_TEST_BINARY_DIR}/foo.vcxproj")
|
5
Tests/RunCMake/VS10Project/VsSourceSettingsTool.cmake
Normal file
5
Tests/RunCMake/VS10Project/VsSourceSettingsTool.cmake
Normal file
@@ -0,0 +1,5 @@
|
||||
enable_language(CXX)
|
||||
|
||||
add_library(foo foo.cpp shader.hlsl shader2.hlsl)
|
||||
set_property(TARGET foo PROPERTY VS_SOURCE_SETTINGS_FXCompile
|
||||
"$<$<CONFIG:DEBUG>:TargetProperty1=TargetProperty1ValueDebug>")
|
1
Tests/RunCMake/VS10Project/shader.hlsl
Normal file
1
Tests/RunCMake/VS10Project/shader.hlsl
Normal file
@@ -0,0 +1 @@
|
||||
|
1
Tests/RunCMake/VS10Project/shader2.hlsl
Normal file
1
Tests/RunCMake/VS10Project/shader2.hlsl
Normal file
@@ -0,0 +1 @@
|
||||
|
@@ -127,7 +127,7 @@ set_property(SOURCE ${VERTEXSHADER_FILES} PROPERTY VS_SHADER_ENTRYPOINT mainVS)
|
||||
set_property(SOURCE ${VERTEXSHADER_FILES} PROPERTY VS_SHADER_MODEL 4.0_level_9_3)
|
||||
set_property(SOURCE ${VERTEXSHADER_FILES} PROPERTY VS_SHADER_FLAGS "/DFLAGS_ADDED")
|
||||
set_property(SOURCE ${VERTEXSHADER_FILES} PROPERTY VS_SHADER_OUTPUT_HEADER_FILE "$(OutDir)%(Filename).h")
|
||||
|
||||
set_property(SOURCE ${VERTEXSHADER_FILES} PROPERTY VS_SETTINGS "$<$<CONFIG:DEBUG>:SourceProperty1=SourceProperty1Value>")
|
||||
|
||||
source_group("Source Files" FILES ${SOURCE_FILES})
|
||||
source_group("Header Files" FILES ${HEADER_FILES})
|
||||
@@ -135,6 +135,11 @@ source_group("Resource Files" FILES ${RESOURCE_FILES})
|
||||
|
||||
add_executable(${EXE_NAME} WIN32 ${SOURCE_FILES} ${HEADER_FILES} ${RESOURCE_FILES})
|
||||
set_property(TARGET ${EXE_NAME} PROPERTY VS_WINRT_COMPONENT TRUE)
|
||||
set_property(TARGET ${EXE_NAME} PROPERTY VS_SOURCE_SETTINGS_FXCompile
|
||||
"TargetProperty1=$<$<CONFIG:DEBUG>:TargetProperty1ValueDebug>$<$<CONFIG:RELEASE>:TargetProperty1ValueRelease>")
|
||||
|
||||
add_custom_command(TARGET ${EXE_NAME} POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -Dvcxproj="${CMAKE_CURRENT_BINARY_DIR}/${EXE_NAME}.vcxproj" -P "${CMAKE_CURRENT_SOURCE_DIR}/EnsurePropertiesSet.cmake")
|
||||
|
||||
string(SUBSTRING "${CMAKE_SYSTEM_VERSION}" 0, 4, SHORT_VERSION)
|
||||
|
||||
|
45
Tests/VSWinStorePhone/EnsurePropertiesSet.cmake
Normal file
45
Tests/VSWinStorePhone/EnsurePropertiesSet.cmake
Normal file
@@ -0,0 +1,45 @@
|
||||
macro(ensure_props_set projectFile)
|
||||
if(NOT EXISTS "${projectFile}")
|
||||
message(FATAL_ERROR "Project file ${projectFile} does not exist.")
|
||||
return()
|
||||
endif()
|
||||
|
||||
set(SourcePropertyFound FALSE)
|
||||
set(DebugTargetPropertyFound FALSE)
|
||||
set(ReleaseTargetPropertyFound FALSE)
|
||||
|
||||
file(STRINGS "${projectFile}" lines)
|
||||
foreach(line IN LISTS lines)
|
||||
if(line MATCHES "<SourceProperty1.*Debug.*>SourceProperty1Value</SourceProperty1>")
|
||||
message("SourceProperty1 setting found")
|
||||
set(SourcePropertyFound TRUE)
|
||||
endif()
|
||||
|
||||
if(line MATCHES "<TargetProperty1.*Debug.*>TargetProperty1ValueDebug</TargetProperty1>")
|
||||
message("Debug TargetProperty1 setting found")
|
||||
set(DebugTargetPropertyFound TRUE)
|
||||
endif()
|
||||
|
||||
if(line MATCHES "<TargetProperty1.*Release.*>TargetProperty1ValueRelease</TargetProperty1>")
|
||||
message("Release TargetProperty1 setting found")
|
||||
set(ReleaseTargetPropertyFound TRUE)
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if (NOT SourcePropertyFound)
|
||||
message(FATAL_ERROR "SourceProperty1 setting not found")
|
||||
return()
|
||||
endif()
|
||||
|
||||
if (NOT DebugTargetPropertyFound)
|
||||
message(FATAL_ERROR "Debug TargetProperty1 setting not found")
|
||||
return()
|
||||
endif()
|
||||
|
||||
if (NOT ReleaseTargetPropertyFound)
|
||||
message(FATAL_ERROR "Release TargetProperty1 setting not found")
|
||||
return()
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
ensure_props_set("${vcxproj}")
|
Reference in New Issue
Block a user