/*============================================================================ CMake - Cross Platform Makefile Generator Copyright 2000-2012 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. ============================================================================*/ #ifndef cmGeneratorTarget_h #define cmGeneratorTarget_h #include "cmStandardIncludes.h" class cmComputeLinkInformation; class cmCustomCommand; class cmGlobalGenerator; class cmLocalGenerator; class cmMakefile; class cmSourceFile; class cmTarget; class cmGeneratorTarget { public: cmGeneratorTarget(cmTarget*); ~cmGeneratorTarget(); int GetType() const; const char *GetName() const; const char *GetProperty(const char *prop); bool GetPropertyAsBool(const char *prop); std::vector<cmSourceFile*> const& GetSourceFiles(); cmTarget* Target; cmMakefile* Makefile; cmLocalGenerator* LocalGenerator; cmGlobalGenerator* GlobalGenerator; /** Sources classified by purpose. */ std::vector<cmSourceFile*> CustomCommands; std::vector<cmSourceFile*> ExtraSources; std::vector<cmSourceFile*> HeaderSources; std::vector<cmSourceFile*> ObjectSources; std::vector<cmSourceFile*> ExternalObjects; std::vector<cmSourceFile*> IDLSources; std::string ModuleDefinitionFile; std::map<cmSourceFile const*, std::string> Objects; std::set<cmSourceFile const*> ExplicitObjectName; /** Full path with trailing slash to the top-level directory holding object files for this target. Includes the build time config name placeholder if needed for the generator. */ std::string ObjectDirectory; std::vector<cmTarget*> ObjectLibraries; void UseObjectLibraries(std::vector<std::string>& objs); /** Add the target output files to the global generator manifest. */ void GenerateTargetManifest(const char* config); std::map<cmStdString, cmComputeLinkInformation*> LinkInformation; cmComputeLinkInformation* GetLinkInformation(const char* config); void GetAppleArchs(const char* config, std::vector<std::string>& archVec); ///! Return the rule variable used to create this type of target, // need to add CMAKE_(LANG) for full name. const char* GetCreateRuleVariable(); /** Get the include directories for this target. */ std::vector<std::string> GetIncludeDirectories(); const char *GetCompileDefinitions(const char *config = 0); private: void ClassifySources(); void LookupObjectLibraries(); cmGeneratorTarget(cmGeneratorTarget const&); void operator=(cmGeneratorTarget const&); }; typedef std::map<cmTarget*, cmGeneratorTarget*> cmGeneratorTargetsType; #endif