Merge topic 'resolve/fix_target_name_with_dot_vs10/allow_upper_case_cpp_and_others'

eccc7d5 Merge branch 'allow_upper_case_cpp_and_others' into resolve/fix_target_name_with_dot_vs10/allow_upper_case_cpp_and_others
ed37fc3 VS2010: Set IntDir for utility and global targets.
e79e412 VS2010: Honor PROJECT_LABEL target property (#10611)
530ade6 Fix targets with . in the name for VS 10 IDE.
This commit is contained in:
Brad King 2010-09-14 15:07:23 -04:00 committed by CMake Topic Stage
commit 4c06e23307
3 changed files with 62 additions and 31 deletions

View File

@ -155,6 +155,13 @@ void cmVisualStudio10TargetGenerator::Generate()
this->WriteString("<Keyword>Win32Proj</Keyword>\n", 2); this->WriteString("<Keyword>Win32Proj</Keyword>\n", 2);
this->WriteString("<Platform>", 2); this->WriteString("<Platform>", 2);
(*this->BuildFileStream) << this->Platform << "</Platform>\n"; (*this->BuildFileStream) << this->Platform << "</Platform>\n";
const char* projLabel = this->Target->GetProperty("PROJECT_LABEL");
if(!projLabel)
{
projLabel = this->Name.c_str();
}
this->WriteString("<ProjectName>", 2);
(*this->BuildFileStream) << projLabel << "</ProjectName>\n";
this->WriteString("</PropertyGroup>\n", 1); this->WriteString("</PropertyGroup>\n", 1);
this->WriteString("<Import Project=" this->WriteString("<Import Project="
"\"$(VCTargetsPath)\\Microsoft.Cpp.Default.props\" />\n", "\"$(VCTargetsPath)\\Microsoft.Cpp.Default.props\" />\n",
@ -807,10 +814,12 @@ bool cmVisualStudio10TargetGenerator::OutputSourceSpecificFlags(
void cmVisualStudio10TargetGenerator::WritePathAndIncrementalLinkOptions() void cmVisualStudio10TargetGenerator::WritePathAndIncrementalLinkOptions()
{ {
if(this->Target->GetType() > cmTarget::MODULE_LIBRARY) cmTarget::TargetType ttype = this->Target->GetType();
if(ttype > cmTarget::GLOBAL_TARGET)
{ {
return; return;
} }
this->WriteString("<PropertyGroup>\n", 2); this->WriteString("<PropertyGroup>\n", 2);
this->WriteString("<_ProjectFileVersion>10.0.20506.1" this->WriteString("<_ProjectFileVersion>10.0.20506.1"
"</_ProjectFileVersion>\n", 3); "</_ProjectFileVersion>\n", 3);
@ -820,36 +829,50 @@ void cmVisualStudio10TargetGenerator::WritePathAndIncrementalLinkOptions()
for(std::vector<std::string>::iterator config = configs->begin(); for(std::vector<std::string>::iterator config = configs->begin();
config != configs->end(); ++config) config != configs->end(); ++config)
{ {
std::string targetNameFull = if(ttype >= cmTarget::UTILITY)
this->Target->GetFullName(config->c_str()); {
std::string intermediateDir = this->LocalGenerator-> this->WritePlatformConfigTag("IntDir", config->c_str(), 3);
GetTargetDirectory(*this->Target); *this->BuildFileStream
intermediateDir += "/"; << "$(Platform)\\$(Configuration)\\$(ProjectName)\\"
intermediateDir += *config; << "</IntDir>\n";
intermediateDir += "/"; }
this->ConvertToWindowsSlash(intermediateDir); else
std::string outDir = this->Target->GetDirectory(config->c_str()); {
this->ConvertToWindowsSlash(outDir); std::string targetNameFull =
this->WritePlatformConfigTag("OutDir", config->c_str(), 3); this->Target->GetFullName(config->c_str());
*this->BuildFileStream << outDir std::string intermediateDir = this->LocalGenerator->
<< "\\" GetTargetDirectory(*this->Target);
<< "</OutDir>\n"; intermediateDir += "/";
this->WritePlatformConfigTag("IntDir", config->c_str(), 3); intermediateDir += *config;
*this->BuildFileStream << intermediateDir intermediateDir += "/";
<< "</IntDir>\n"; this->ConvertToWindowsSlash(intermediateDir);
this->WritePlatformConfigTag("TargetName", config->c_str(), 3); std::string outDir = this->Target->GetDirectory(config->c_str());
*this->BuildFileStream << cmSystemTools::GetFilenameWithoutExtension( this->ConvertToWindowsSlash(outDir);
targetNameFull.c_str())
<< "</TargetName>\n"; this->WritePlatformConfigTag("OutDir", config->c_str(), 3);
*this->BuildFileStream << outDir
this->WritePlatformConfigTag("TargetExt", config->c_str(), 3); << "\\"
*this->BuildFileStream << cmSystemTools::GetFilenameLastExtension( << "</OutDir>\n";
targetNameFull.c_str())
<< "</TargetExt>\n"; this->WritePlatformConfigTag("IntDir", config->c_str(), 3);
this->OutputLinkIncremental(*config); *this->BuildFileStream << intermediateDir
<< "</IntDir>\n";
this->WritePlatformConfigTag("TargetName", config->c_str(), 3);
*this->BuildFileStream
<< cmSystemTools::GetFilenameWithoutLastExtension(
targetNameFull.c_str())
<< "</TargetName>\n";
this->WritePlatformConfigTag("TargetExt", config->c_str(), 3);
*this->BuildFileStream
<< cmSystemTools::GetFilenameLastExtension(targetNameFull.c_str())
<< "</TargetExt>\n";
this->OutputLinkIncremental(*config);
}
} }
this->WriteString("</PropertyGroup>\n", 2); this->WriteString("</PropertyGroup>\n", 2);
} }

View File

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

View File

@ -166,3 +166,11 @@ ELSE(DEFINED SUBDIR_DEFINED)
ENDIF(DEFINED SUBDIR_DEFINED) ENDIF(DEFINED SUBDIR_DEFINED)
ADD_EXECUTABLE(FunctionTest functionTest.c) ADD_EXECUTABLE(FunctionTest functionTest.c)
# Use the PROJECT_LABEL property: in IDEs, the project label should appear
# in the UI rather than the target name. If this were a good test of the
# property rather than just a smoke test, it would verify that the label
# actually appears in the UI of the IDE... Or at least that the text appears
# somewhere in the generated project files.
SET_PROPERTY(TARGET miniFunctionTest
PROPERTY PROJECT_LABEL "Test de Fonctionnement")