ENH: Add accessor for the list of commands

This commit is contained in:
Andy Cedilnik 2003-08-03 20:47:44 -04:00
parent 32bfe66b5d
commit c7f1198a00
5 changed files with 36 additions and 9 deletions

View File

@ -47,6 +47,22 @@ bool cmGetCMakePropertyCommand::InitialPass(
output += vars[cc]; output += vars[cc];
} }
} }
else if ( args[1] == "COMMANDS" )
{
cmake::RegisteredCommandsMap::iterator cmds
= m_Makefile->GetCMakeInstance()->GetCommands()->begin();
for (cc=0 ;
cmds != m_Makefile->GetCMakeInstance()->GetCommands()->end();
++ cmds )
{
if ( cc > 0 )
{
output += ";";
}
output += cmds->first.c_str();
cc++;
}
}
else else
{ {
std::string emsg = "Unknown CMake property: " + args[1]; std::string emsg = "Unknown CMake property: " + args[1];

View File

@ -57,7 +57,7 @@ public:
"Get a property from the CMake. The value of the property is" "Get a property from the CMake. The value of the property is"
"stored in the variable VAR. If the property is not found," "stored in the variable VAR. If the property is not found,"
"CMake will report an error. The properties include: VARIABLES, " "CMake will report an error. The properties include: VARIABLES, "
"CACHE_VARIABLES."; "CACHE_VARIABLES, COMMANDS.";
} }
cmTypeMacro(cmGetCMakePropertyCommand, cmCommand); cmTypeMacro(cmGetCMakePropertyCommand, cmCommand);

View File

@ -50,6 +50,8 @@ class cmVariableWatch;
class cmake class cmake
{ {
public: public:
typedef std::map<cmStdString, cmCommand*> RegisteredCommandsMap;
///! construct an instance of cmake ///! construct an instance of cmake
cmake(); cmake();
///! destruct an instance of cmake ///! destruct an instance of cmake
@ -193,6 +195,9 @@ class cmake
*/ */
cmCommand *GetCommand(const char *name); cmCommand *GetCommand(const char *name);
/** Get list of all commands */
RegisteredCommandsMap* GetCommands() { return &m_Commands; }
/** Check if a command exists. */ /** Check if a command exists. */
bool CommandExists(const char* name) const; bool CommandExists(const char* name) const;
@ -242,7 +247,6 @@ class cmake
protected: protected:
typedef cmGlobalGenerator* (*CreateGeneratorFunctionType)(); typedef cmGlobalGenerator* (*CreateGeneratorFunctionType)();
typedef std::map<cmStdString, cmCommand*> RegisteredCommandsMap;
typedef std::map<cmStdString, CreateGeneratorFunctionType> RegisteredGeneratorsMap; typedef std::map<cmStdString, CreateGeneratorFunctionType> RegisteredGeneratorsMap;
RegisteredCommandsMap m_Commands; RegisteredCommandsMap m_Commands;
RegisteredGeneratorsMap m_Generators; RegisteredGeneratorsMap m_Generators;

View File

@ -6,11 +6,17 @@ CONFIGURE_FILE(${DumpInformation_SOURCE_DIR}/DumpInformation.h.in
${DumpInformation_BINARY_DIR}/DumpInformation.h) ${DumpInformation_BINARY_DIR}/DumpInformation.h)
ADD_EXECUTABLE(DumpInformation DumpInformation.cxx) ADD_EXECUTABLE(DumpInformation DumpInformation.cxx)
WRITE_FILE(${DumpInformation_BINARY_DIR}/AllVariables.txt "") FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/AllVariables.txt "")
GET_CMAKE_PROPERTY(VARS VARIABLES) GET_CMAKE_PROPERTY(res VARIABLES)
FOREACH(var ${VARS}) FOREACH(var ${res})
WRITE_FILE(${DumpInformation_BINARY_DIR}/AllVariables.txt FILE(APPEND ${CMAKE_CURRENT_BINARY_DIR}/AllVariables.txt
"${var} \"${${var}}\"" APPEND) "${var} \"${${var}}\"\n")
#MESSAGE(STATUS "Variable ${var} \"${${var}}\"") ENDFOREACH(var ${res})
ENDFOREACH(var ${VARS})
FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/AllCommands.txt "")
GET_CMAKE_PROPERTY(res COMMANDS)
FOREACH(var ${res})
FILE(APPEND ${CMAKE_CURRENT_BINARY_DIR}/AllCommands.txt
"${var}\n")
ENDFOREACH(var ${res})

View File

@ -53,6 +53,7 @@ int main(int,char *[])
{ {
DumpInformation_BINARY_DIR "/SystemInformation.out", DumpInformation_BINARY_DIR "/SystemInformation.out",
DumpInformation_BINARY_DIR "/AllVariables.txt", DumpInformation_BINARY_DIR "/AllVariables.txt",
DumpInformation_BINARY_DIR "/AllCommands.txt",
DumpInformation_BINARY_DIR "/../../Source/cmConfigure.h", DumpInformation_BINARY_DIR "/../../Source/cmConfigure.h",
DumpInformation_BINARY_DIR "/../../CMakeCache.txt", DumpInformation_BINARY_DIR "/../../CMakeCache.txt",
DumpInformation_BINARY_DIR "/../../CMakeOutput.log", DumpInformation_BINARY_DIR "/../../CMakeOutput.log",