/*============================================================================ CMake - Cross Platform Makefile Generator Copyright 2000-2009 Kitware, Inc., Insight Software Consortium Distributed under the OSI-approved BSD License (the "License"); see accompanying file Copyright.txt for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the License for more information. ============================================================================*/ #include "cmIncludeExternalMSProjectCommand.h" // cmIncludeExternalMSProjectCommand bool cmIncludeExternalMSProjectCommand ::InitialPass(std::vector const& args, cmExecutionStatus &) { if(args.size() < 2) { this->SetError("INCLUDE_EXTERNAL_MSPROJECT called with incorrect " "number of arguments"); return false; } // only compile this for win32 to avoid coverage errors #ifdef _WIN32 if(this->Makefile->GetDefinition("WIN32")) { enum Doing { DoingNone, DoingType, DoingGuid, DoingPlatform }; Doing doing = DoingNone; std::string customType; std::string customGuid; std::string platformMapping; std::vector depends; for (unsigned int i=2; iMakefile->GetCMakeInstance()->AddCacheEntry( guidVariable.c_str(), customGuid.c_str(), "Stored GUID", cmCacheManager::INTERNAL); } // Create a target instance for this utility. cmTarget* target=this->Makefile->AddNewTarget(cmTarget::UTILITY, utility_name.c_str()); target->SetProperty("GENERATOR_FILE_NAME", utility_name.c_str()); target->SetProperty("EXTERNAL_MSPROJECT", path.c_str()); target->SetProperty("EXCLUDE_FROM_ALL", "FALSE"); if (!customType.empty()) target->SetProperty("VS_PROJECT_TYPE",customType.c_str()); if (!platformMapping.empty()) target->SetProperty("VS_PLATFORM_MAPPING",platformMapping.c_str()); for (std::vector::const_iterator it = depends.begin(); it != depends.end(); ++it) { target->AddUtility(it->c_str()); } } #endif return true; }