瀏覽代碼

Tests: Extend VS10Project to cover `.targets` file linking

With VS generators for 2010 and above, passing a `.targets` file to
`target_link_libraries` is expected to generate content in the
`.vcxproj` file to import the targets file.  Add a test to cover this.
Soji Yamakawa 9 年之前
父節點
當前提交
c9560a9a7b

+ 1 - 0
Tests/RunCMake/VS10Project/RunCMakeTest.cmake

@@ -1,2 +1,3 @@
 include(RunCMake)
 run_cmake(VsConfigurationType)
+run_cmake(VsTargetsFileReferences)

+ 45 - 0
Tests/RunCMake/VS10Project/VsTargetsFileReferences-check.cmake

@@ -0,0 +1,45 @@
+set(files foo.vcxproj bar.vcxproj baz.vcxproj)
+
+foreach(file ${files})
+  set(vsProjectFile ${RunCMake_TEST_BINARY_DIR}/${file})
+
+  if(NOT EXISTS "${vsProjectFile}")
+    set(RunCMake_TEST_FAILED "Project file ${vsProjectFile} does not exist.")
+    return()
+  endif()
+
+  set(waldoFound FALSE)
+  set(xyzzyFound FALSE)
+  file(STRINGS "${vsProjectFile}" lines)
+  foreach(line IN LISTS lines)
+    if(line MATCHES "^ *<Import Project=.*/>$")
+      if(line MATCHES "^.*waldo.targets.*$")
+        set(waldoFound TRUE)
+        message(STATUS "${file} is importing waldo.targets")
+      elseif(line MATCHES "^.*xyzzy.targets.*$")
+        set(xyzzyFound TRUE)
+        message(STATUS "${file} is importing xyzzy.targets")
+      endif()
+    endif()
+  endforeach()
+
+  if("${file}" STREQUAL "foo.vcxproj")
+    if(NOT xyzzyFound)
+      set(RunCMake_TEST_FAILED "xyzzy.targets not imported from ${file}")
+      return()
+    endif()
+    if(waldoFound)
+      set(RunCMake_TEST_FAILED "waldo.targets imported from ${file}")
+      return()
+    endif()
+  else()
+    if(NOT xyzzyFound)
+      set(RunCMake_TEST_FAILED "xyzzy.targets not imported from ${file}")
+      return()
+    endif()
+    if(NOT waldoFound)
+      set(RunCMake_TEST_FAILED "waldo.targets not imported from ${file}")
+      return()
+    endif()
+  endif()
+endforeach()

+ 9 - 0
Tests/RunCMake/VS10Project/VsTargetsFileReferences.cmake

@@ -0,0 +1,9 @@
+enable_language(CXX)
+add_library(foo foo.cpp)
+target_link_libraries(foo ${CMAKE_BINARY_DIR}/xyzzy.targets)
+
+add_library(bar bar.cpp)
+target_link_libraries(bar foo ${CMAKE_BINARY_DIR}/waldo.targets)
+
+add_executable(baz baz.cpp)
+target_link_libraries(baz bar)

+ 3 - 0
Tests/RunCMake/VS10Project/bar.cpp

@@ -0,0 +1,3 @@
+void bar()
+{
+}

+ 3 - 0
Tests/RunCMake/VS10Project/baz.cpp

@@ -0,0 +1,3 @@
+void baz()
+{
+}