Bladeren bron

BUG: Make sure sources with unknown extensions are not compiled by VS.

Brad King 19 jaren geleden
bovenliggende
commit
24b55bfe11

+ 13 - 3
Source/cmLocalVisualStudioGenerator.cxx

@@ -33,9 +33,19 @@ cmLocalVisualStudioGenerator::~cmLocalVisualStudioGenerator()
 //----------------------------------------------------------------------------
 bool cmLocalVisualStudioGenerator::SourceFileCompiles(const cmSourceFile* sf)
 {
-  return (!sf->GetCustomCommand() &&
-          !sf->GetPropertyAsBool("HEADER_FILE_ONLY") &&
-          !sf->GetPropertyAsBool("EXTERNAL_OBJECT"));
+  // Identify the language of the source file.
+  if(const char* lang = this->GetSourceFileLanguage(*sf))
+    {
+    // Check whether this source will actually be compiled.
+    return (!sf->GetCustomCommand() &&
+            !sf->GetPropertyAsBool("HEADER_FILE_ONLY") &&
+            !sf->GetPropertyAsBool("EXTERNAL_OBJECT"));
+    }
+  else
+    {
+    // Unknown source file language.  Assume it will not be compiled.
+    return false;
+    }
 }
 
 //----------------------------------------------------------------------------

+ 1 - 0
Tests/Complex/Executable/A.txt

@@ -0,0 +1 @@
+This file should not be compiled!

+ 1 - 1
Tests/Complex/Executable/CMakeLists.txt

@@ -19,7 +19,7 @@ ENDIF(NOT CMAKE_TEST_DIFFERENT_GENERATOR)
 SET(COMPLEX_LIBS CMakeTestLibrary;CMakeTestLibraryShared;CMakeTestCLibraryShared)
 LINK_LIBRARIES(${COMPLEX_LIBS})
 
-ADD_EXECUTABLE(A A.cxx A.hh A.h)
+ADD_EXECUTABLE(A A.cxx A.hh A.h A.txt)
 ADD_EXECUTABLE(complex complex testcflags.c )
 #  Sub1/NameConflictTest.c Sub2/NameConflictTest.c)
 ADD_EXECUTABLE(complex.file complex.file.cxx)

+ 1 - 0
Tests/ComplexOneConfig/Executable/A.txt

@@ -0,0 +1 @@
+This file should not be compiled!

+ 1 - 1
Tests/ComplexOneConfig/Executable/CMakeLists.txt

@@ -19,7 +19,7 @@ ENDIF(NOT CMAKE_TEST_DIFFERENT_GENERATOR)
 SET(COMPLEX_LIBS CMakeTestLibrary;CMakeTestLibraryShared;CMakeTestCLibraryShared)
 LINK_LIBRARIES(${COMPLEX_LIBS})
 
-ADD_EXECUTABLE(A A.cxx A.hh A.h)
+ADD_EXECUTABLE(A A.cxx A.hh A.h A.txt)
 ADD_EXECUTABLE(complex complex testcflags.c )
 #  Sub1/NameConflictTest.c Sub2/NameConflictTest.c)
 ADD_EXECUTABLE(complex.file complex.file.cxx)

+ 1 - 0
Tests/ComplexRelativePaths/Executable/A.txt

@@ -0,0 +1 @@
+This file should not be compiled!

+ 1 - 1
Tests/ComplexRelativePaths/Executable/CMakeLists.txt

@@ -19,7 +19,7 @@ ENDIF(NOT CMAKE_TEST_DIFFERENT_GENERATOR)
 SET(COMPLEX_LIBS CMakeTestLibrary;CMakeTestLibraryShared;CMakeTestCLibraryShared)
 LINK_LIBRARIES(${COMPLEX_LIBS})
 
-ADD_EXECUTABLE(A A.cxx A.hh A.h)
+ADD_EXECUTABLE(A A.cxx A.hh A.h A.txt)
 ADD_EXECUTABLE(complex complex testcflags.c )
 #  Sub1/NameConflictTest.c Sub2/NameConflictTest.c)
 ADD_EXECUTABLE(complex.file complex.file.cxx)