cmake: Split -E command implementation into separate source file

Move the cmake::ExecuteCMakeCommand static method and all the static
methods it calls out of the 'cmake' class to a separate 'cmcmd' class.
Build the latter as part of the main cmake executable with cmakemain.cxx
and not in CMakeLib.  Drop unused header includes from "cmake.cxx".

By moving this implementation out of cmake.cxx we avoid carrying it
around in all the executables that use class 'cmake'.  It is needed only
for the main "cmake -E" functionality.
This commit is contained in:
Brad King 2013-10-03 17:28:00 -04:00
parent e27523a834
commit c04995b46e
7 changed files with 1432 additions and 1385 deletions

View File

@ -545,7 +545,7 @@ if(APPLE)
endif() endif()
# Build CMake executable # Build CMake executable
add_executable(cmake cmakemain.cxx) add_executable(cmake cmakemain.cxx cmcmd.cxx cmcmd.h)
target_link_libraries(cmake CMakeLib) target_link_libraries(cmake CMakeLib)
# Build special executable for running programs on Windows 98. # Build special executable for running programs on Windows 98.

File diff suppressed because it is too large Load Diff

View File

@ -209,11 +209,6 @@ class cmake
void AddCacheEntry(const char* key, const char* value, void AddCacheEntry(const char* key, const char* value,
const char* helpString, const char* helpString,
int type); int type);
/**
* Execute commands during the build process. Supports options such
* as echo, remove file etc.
*/
static int ExecuteCMakeCommand(std::vector<std::string>&);
/** /**
* Get the system information and write it to the file specified * Get the system information and write it to the file specified
@ -450,29 +445,6 @@ protected:
void GenerateGraphViz(const char* fileName) const; void GenerateGraphViz(const char* fileName) const;
static int SymlinkLibrary(std::vector<std::string>& args);
static int SymlinkExecutable(std::vector<std::string>& args);
static bool SymlinkInternal(std::string const& file,
std::string const& link);
static int ExecuteEchoColor(std::vector<std::string>& args);
static int ExecuteLinkScript(std::vector<std::string>& args);
static int WindowsCEEnvironment(const char* version,
const std::string& name);
static int VisualStudioLink(std::vector<std::string>& args, int type);
static int VisualStudioLinkIncremental(std::vector<std::string>& args,
int type,
bool verbose);
static int VisualStudioLinkNonIncremental(std::vector<std::string>& args,
int type,
bool hasManifest,
bool verbose);
static int ParseVisualStudioLinkCommand(std::vector<std::string>& args,
std::vector<cmStdString>& command,
std::string& targetName);
static bool RunCommand(const char* comment,
std::vector<cmStdString>& command,
bool verbose,
int* retCodeOut = 0);
cmVariableWatch* VariableWatch; cmVariableWatch* VariableWatch;
///! Find the full path to one of the cmake programs like ctest, cpack, etc. ///! Find the full path to one of the cmake programs like ctest, cpack, etc.

View File

@ -17,6 +17,7 @@
#endif #endif
#include "cmake.h" #include "cmake.h"
#include "cmcmd.h"
#include "cmCacheManager.h" #include "cmCacheManager.h"
#include "cmListFileCache.h" #include "cmListFileCache.h"
#include "cmakewizard.h" #include "cmakewizard.h"
@ -510,7 +511,7 @@ int do_cmake(int ac, char** av)
} }
if(command) if(command)
{ {
int ret = cmake::ExecuteCMakeCommand(args); int ret = cmcmd::ExecuteCMakeCommand(args);
return ret; return ret;
} }
if (wiz) if (wiz)

1374
Source/cmcmd.cxx Normal file

File diff suppressed because it is too large Load Diff

54
Source/cmcmd.h Normal file
View File

@ -0,0 +1,54 @@
/*============================================================================
CMake - Cross Platform Makefile Generator
Copyright 2000-2009 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 cmcmd_h
#define cmcmd_h
#include "cmStandardIncludes.h"
class cmcmd
{
public:
/**
* Execute commands during the build process. Supports options such
* as echo, remove file etc.
*/
static int ExecuteCMakeCommand(std::vector<std::string>&);
protected:
static int SymlinkLibrary(std::vector<std::string>& args);
static int SymlinkExecutable(std::vector<std::string>& args);
static bool SymlinkInternal(std::string const& file,
std::string const& link);
static int ExecuteEchoColor(std::vector<std::string>& args);
static int ExecuteLinkScript(std::vector<std::string>& args);
static int WindowsCEEnvironment(const char* version,
const std::string& name);
static int VisualStudioLink(std::vector<std::string>& args, int type);
static int VisualStudioLinkIncremental(std::vector<std::string>& args,
int type,
bool verbose);
static int VisualStudioLinkNonIncremental(std::vector<std::string>& args,
int type,
bool hasManifest,
bool verbose);
static int ParseVisualStudioLinkCommand(std::vector<std::string>& args,
std::vector<cmStdString>& command,
std::string& targetName);
static bool RunCommand(const char* comment,
std::vector<cmStdString>& command,
bool verbose,
int* retCodeOut = 0);
};
#endif

View File

@ -197,6 +197,7 @@ CMAKE_CXX_SOURCES="\
cmake \ cmake \
cmakemain \ cmakemain \
cmakewizard \ cmakewizard \
cmcmd \
cmCommandArgumentLexer \ cmCommandArgumentLexer \
cmCommandArgumentParser \ cmCommandArgumentParser \
cmCommandArgumentParserHelper \ cmCommandArgumentParserHelper \