Merge topic 'vs-lang-C' into release-3.18

5c04e77e07 VS: Restore compilation of '.C' sources as C++

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4880
This commit is contained in:
Brad King
2020-06-12 14:06:31 +00:00
committed by Kitware Robot
4 changed files with 10 additions and 4 deletions

View File

@@ -2321,11 +2321,14 @@ void cmVisualStudio10TargetGenerator::OutputSourceSpecificFlags(
}
// Force language if the file extension does not match.
// Note that MSVC treats the upper-case '.C' extension as C and not C++.
std::string const ext = sf.GetExtension();
std::string const extLang = ext == "C"
? "C"
: this->GlobalGenerator->GetLanguageFromExtension(ext.c_str());
std::string lang = this->LocalGenerator->GetSourceFileLanguage(sf);
const char* compileAs = 0;
if (lang !=
this->GlobalGenerator->GetLanguageFromExtension(
sf.GetExtension().c_str())) {
if (lang != extLang) {
if (lang == "CXX") {
// force a C++ file type
compileAs = "CompileAsCpp";

View File

@@ -5,7 +5,7 @@ set(CMAKE_DEBUG_POSTFIX "_test_debug_postfix")
if(WIN32)
set(EXTRA_SRCS test.CPP)
endif()
add_library(testcxx1.my STATIC libcxx1.cxx ${EXTRA_SRCS})
add_library(testcxx1.my STATIC libcxx1.cxx test.C ${EXTRA_SRCS})
add_library(testcxx2 SHARED libcxx2.cxx)
add_executable (CxxOnly cxxonly.cxx)
target_link_libraries(CxxOnly testcxx1.my testcxx2)

View File

@@ -1,5 +1,6 @@
#include "libcxx1.h"
#include "libcxx2.h"
extern int testC;
#ifdef _MSC_VER
extern int testCPP;
#endif
@@ -8,6 +9,7 @@ extern int testCPP;
int main()
{
testC = 1;
#ifdef _MSC_VER
testCPP = 1;
#endif

1
Tests/CxxOnly/test.C Normal file
View File

@@ -0,0 +1 @@
int testC;