At this point, it is an interface to the cache. It will be extended to be a universal interface for access to and manipulation of configuration-time data (defintions, properties on targets, directories, source files etc). This will allow porting all command implementations away from the cmMakefile and cmTarget classes, and result in something more-purely related to configuration-time processing of cmake commands. That should serve at least the following goals: * Split the CMake implementation more definitively into three stages: Configuration, computation and generation, and be able to implement each optimally for memory access patterns etc. * Make better IDE integration possible by making more configuration data available. * Make it possiblte to use a smaller library than CMakeLib.a in cpack and ctest, resulting in smaller executables. * Make it possible to run the configure step multiple times in the same CMake run (#14539). Manage its lifetime in the cmake class, and add a convenience accessor to cmMakefile.
63 lines
2.5 KiB
C++
63 lines
2.5 KiB
C++
/*============================================================================
|
|
CMake - Cross Platform Makefile Generator
|
|
Copyright 2015 Stephen Kelly <steveire@gmail.com>
|
|
|
|
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 cmState_h
|
|
#define cmState_h
|
|
|
|
#include "cmCacheManager.h"
|
|
|
|
class cmake;
|
|
|
|
class cmState
|
|
{
|
|
public:
|
|
cmState(cmake* cm);
|
|
|
|
static cmCacheManager::CacheEntryType StringToCacheEntryType(const char*);
|
|
static const char* CacheEntryTypeToString(cmCacheManager::CacheEntryType);
|
|
static bool IsCacheEntryType(std::string const& key);
|
|
|
|
std::vector<std::string> GetCacheEntryKeys() const;
|
|
const char* GetCacheEntryValue(std::string const& key) const;
|
|
const char* GetInitializedCacheValue(std::string const& key) const;
|
|
cmCacheManager::CacheEntryType
|
|
GetCacheEntryType(std::string const& key) const;
|
|
void SetCacheEntryValue(std::string const& key, std::string const& value);
|
|
void SetCacheValue(std::string const& key, std::string const& value);
|
|
|
|
void AddCacheEntry(const std::string& key, const char* value,
|
|
const char* helpString,
|
|
cmCacheManager::CacheEntryType type);
|
|
void RemoveCacheEntry(std::string const& key);
|
|
|
|
void SetCacheEntryProperty(std::string const& key,
|
|
std::string const& propertyName,
|
|
std::string const& value);
|
|
void SetCacheEntryBoolProperty(std::string const& key,
|
|
std::string const& propertyName,
|
|
bool value);
|
|
const char* GetCacheEntryProperty(std::string const& key,
|
|
std::string const& propertyName);
|
|
bool GetCacheEntryPropertyAsBool(std::string const& key,
|
|
std::string const& propertyName);
|
|
void AppendCacheEntryProperty(std::string const& key,
|
|
const std::string& property,
|
|
const std::string& value,
|
|
bool asString = false);
|
|
void RemoveCacheEntryProperty(std::string const& key,
|
|
std::string const& propertyName);
|
|
|
|
private:
|
|
cmake* CMakeInstance;
|
|
};
|
|
|
|
#endif
|