Add command for accessing cmake properties. At this point the only properties are VARIABLES and CACHE_VARIABLES. Also add test for this feature
This commit is contained in:
parent
ce750180ba
commit
814b8856a0
|
@ -46,6 +46,7 @@
|
|||
#include "cmFindProgramCommand.cxx"
|
||||
#include "cmForEachCommand.cxx"
|
||||
#include "cmFLTKWrapUICommand.cxx"
|
||||
#include "cmGetCMakePropertyCommand.cxx"
|
||||
#include "cmGetFilenameComponentCommand.cxx"
|
||||
#include "cmGetSourceFilePropertyCommand.cxx"
|
||||
#include "cmGetTargetPropertyCommand.cxx"
|
||||
|
@ -132,6 +133,7 @@ void GetPredefinedCommands(std::list<cmCommand*>& commands)
|
|||
commands.push_back(new cmFindProgramCommand);
|
||||
commands.push_back(new cmForEachCommand);
|
||||
commands.push_back(new cmFLTKWrapUICommand);
|
||||
commands.push_back(new cmGetCMakePropertyCommand);
|
||||
commands.push_back(new cmGetFilenameComponentCommand);
|
||||
commands.push_back(new cmGetSourceFilePropertyCommand);
|
||||
commands.push_back(new cmGetTargetPropertyCommand);
|
||||
|
|
|
@ -0,0 +1,60 @@
|
|||
/*=========================================================================
|
||||
|
||||
Program: CMake - Cross-Platform Makefile Generator
|
||||
Module: $RCSfile$
|
||||
Language: C++
|
||||
Date: $Date$
|
||||
Version: $Revision$
|
||||
|
||||
Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
|
||||
See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
|
||||
|
||||
This software is distributed WITHOUT ANY WARRANTY; without even
|
||||
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
PURPOSE. See the above copyright notices for more information.
|
||||
|
||||
=========================================================================*/
|
||||
#include "cmGetCMakePropertyCommand.h"
|
||||
|
||||
// cmGetCMakePropertyCommand
|
||||
bool cmGetCMakePropertyCommand::InitialPass(
|
||||
std::vector<std::string> const& args)
|
||||
{
|
||||
if(args.size() < 2 )
|
||||
{
|
||||
this->SetError("called with incorrect number of arguments");
|
||||
return false;
|
||||
}
|
||||
|
||||
int cc;
|
||||
std::string variable = args[0];
|
||||
std::string output = "";
|
||||
|
||||
if ( args[1] == "VARIABLES" || args[1] == "CACHE_VARIABLES" )
|
||||
{
|
||||
int cacheonly = 0;
|
||||
if ( args[1] == "CACHE_VARIABLES" )
|
||||
{
|
||||
cacheonly = 1;
|
||||
}
|
||||
std::vector<std::string> vars = m_Makefile->GetDefinitions(cacheonly);
|
||||
for ( cc = 0; cc < vars.size(); cc ++ )
|
||||
{
|
||||
if ( cc > 0 )
|
||||
{
|
||||
output += ";";
|
||||
}
|
||||
output += vars[cc];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
std::string emsg = "Unknown CMake property: " + args[1];
|
||||
this->SetError(emsg.c_str());
|
||||
return false;
|
||||
}
|
||||
m_Makefile->AddDefinition(variable.c_str(), output.c_str());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
/*=========================================================================
|
||||
|
||||
Program: CMake - Cross-Platform Makefile Generator
|
||||
Module: $RCSfile$
|
||||
Language: C++
|
||||
Date: $Date$
|
||||
Version: $Revision$
|
||||
|
||||
Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
|
||||
See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
|
||||
|
||||
This software is distributed WITHOUT ANY WARRANTY; without even
|
||||
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
PURPOSE. See the above copyright notices for more information.
|
||||
|
||||
=========================================================================*/
|
||||
#ifndef cmGetCMakePropertyCommand_h
|
||||
#define cmGetCMakePropertyCommand_h
|
||||
|
||||
#include "cmStandardIncludes.h"
|
||||
#include "cmCommand.h"
|
||||
|
||||
class cmGetCMakePropertyCommand : public cmCommand
|
||||
{
|
||||
public:
|
||||
virtual cmCommand* Clone()
|
||||
{
|
||||
return new cmGetCMakePropertyCommand;
|
||||
}
|
||||
|
||||
/**
|
||||
* This is called when the command is first encountered in
|
||||
* the input file.
|
||||
*/
|
||||
virtual bool InitialPass(std::vector<std::string> const& args);
|
||||
|
||||
/**
|
||||
* The name of the command as specified in CMakeList.txt.
|
||||
*/
|
||||
virtual const char* GetName() { return "GET_CMAKE_PROPERTY";}
|
||||
|
||||
/**
|
||||
* Succinct documentation.
|
||||
*/
|
||||
virtual const char* GetTerseDocumentation()
|
||||
{
|
||||
return "Get a property of the CMake.";
|
||||
}
|
||||
|
||||
/**
|
||||
* Longer documentation.
|
||||
*/
|
||||
virtual const char* GetFullDocumentation()
|
||||
{
|
||||
return
|
||||
" GET_CMAKE_PROPERTY(VAR property)\n"
|
||||
"Get a property from the CMake. The value of the property is"
|
||||
"stored in the variable VAR. If the property is not found,"
|
||||
"CMake will report an error. The properties include: VARIABLES, "
|
||||
"CACHE_VARIABLES.";
|
||||
}
|
||||
|
||||
cmTypeMacro(cmGetCMakePropertyCommand, cmCommand);
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif
|
|
@ -6,3 +6,8 @@ CONFIGURE_FILE(${DumpInformation_SOURCE_DIR}/DumpInformation.h.in
|
|||
${DumpInformation_BINARY_DIR}/DumpInformation.h)
|
||||
ADD_EXECUTABLE(DumpInformation DumpInformation.cxx)
|
||||
|
||||
GET_CMAKE_PROPERTY(VARS VARIABLES)
|
||||
FOREACH(var ${VARS})
|
||||
MESSAGE(STATUS "Variable ${var} \"${${var}}\"")
|
||||
ENDFOREACH(var ${VARS})
|
||||
|
||||
|
|
Loading…
Reference in New Issue