/*============================================================================ CMake - Cross Platform Makefile Generator Copyright 2011 Peter Collingbourne Copyright 2011 Nicolas Despres 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. ============================================================================*/ #ifndef cmNinjaNormalTargetGenerator_h # define cmNinjaNormalTargetGenerator_h # include "cmNinjaTargetGenerator.h" # include "cmNinjaTypes.h" class cmSourceFile; class cmNinjaNormalTargetGenerator : public cmNinjaTargetGenerator { public: cmNinjaNormalTargetGenerator(cmTarget* target); ~cmNinjaNormalTargetGenerator(); void Generate(); private: std::string LanguageLinkerRule() const; const char* GetVisibleTypeName() const; void WriteLanguagesRules(); void WriteLinkRule(bool useResponseFile); void WriteLinkStatement(); void WriteObjectLibStatement(); std::vector ComputeLinkCmd(); void EnsureDirectoryExists(const std::string& dir); void EnsureParentDirectoryExists(const std::string& path); private: // Target name info. std::string TargetNameOut; std::string TargetNameSO; std::string TargetNameReal; std::string TargetNameImport; std::string TargetNamePDB; const char *TargetLinkLanguage; }; #endif // ! cmNinjaNormalTargetGenerator_h