CMakeLists: Generate the cmCommands.cxx file.

Define the list of commands in the CMakeLists.txt file. List the
sources in the CMakeLib target, but mark them as HEADER_FILE_ONLY.
This has the effect that IDEs will show the files, though they
will not be built again.

Add a cmCommandsForBootstrap.cxx file for bootstrapping purposes.

Rename the cmExportLibraryDependencies file to match the common
pattern.
This commit is contained in:
Stephen Kelly 2014-02-09 21:55:17 +01:00
parent 1cc3e9f2e7
commit 23d3d38a31
7 changed files with 82 additions and 89 deletions

View File

@ -127,7 +127,7 @@ set(SRCS
cmBootstrapCommands2.cxx
cmCacheManager.cxx
cmCacheManager.h
cmCommands.cxx
"${CMAKE_CURRENT_BINARY_DIR}/cmCommands.cxx"
cmCommands.h
cmCommandArgumentLexer.cxx
cmCommandArgumentParser.cxx
@ -298,6 +298,50 @@ set(SRCS
cm_utf8.c
)
set(COMMAND_INCLUDES "#include \"cmTargetPropCommandBase.cxx\"\n")
list(APPEND SRCS cmTargetPropCommandBase.cxx)
set_property(SOURCE cmTargetPropCommandBase.cxx PROPERTY HEADER_FILE_ONLY ON)
set(NEW_COMMANDS "")
foreach(command_file
cmAddCompileOptionsCommand
cmAuxSourceDirectoryCommand
cmBuildNameCommand
cmCMakeHostSystemInformationCommand
cmElseIfCommand
cmExportCommand
cmExportLibraryDependenciesCommand
cmFLTKWrapUICommand
cmIncludeExternalMSProjectCommand
cmInstallProgramsCommand
cmLinkLibrariesCommand
cmLoadCacheCommand
cmOutputRequiredFilesCommand
cmQTWrapCPPCommand
cmQTWrapUICommand
cmRemoveCommand
cmRemoveDefinitionsCommand
cmSourceGroupCommand
cmSubdirDependsCommand
cmTargetCompileDefinitionsCommand
cmTargetCompileOptionsCommand
cmTargetIncludeDirectoriesCommand
cmUseMangledMesaCommand
cmUtilitySourceCommand
cmVariableRequiresCommand
cmVariableWatchCommand
cmWriteFileCommand
# This one must be last because it includes windows.h and
# windows.h #defines GetCurrentDirectory which is a member
# of cmMakefile
cmLoadCommandCommand
)
set(COMMAND_INCLUDES "${COMMAND_INCLUDES}#include \"${command_file}.cxx\"\n")
set(NEW_COMMANDS "${NEW_COMMANDS}commands.push_back(new ${command_file});\n")
list(APPEND SRCS ${command_file}.cxx)
set_property(SOURCE ${command_file}.cxx PROPERTY HEADER_FILE_ONLY ON)
endforeach()
configure_file(cmCommands.cxx.in ${CMAKE_CURRENT_BINARY_DIR}/cmCommands.cxx @ONLY)
# Kdevelop only works on UNIX and not windows
if(UNIX)
set(SRCS ${SRCS} cmGlobalKdevelopGenerator.cxx)

View File

@ -1,86 +0,0 @@
/*============================================================================
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.
============================================================================*/
#include "cmCommands.h"
#if defined(CMAKE_BUILD_WITH_CMAKE)
#include "cmAddCompileOptionsCommand.cxx"
#include "cmAuxSourceDirectoryCommand.cxx"
#include "cmBuildNameCommand.cxx"
#include "cmCMakeHostSystemInformationCommand.cxx"
#include "cmElseIfCommand.cxx"
#include "cmExportCommand.cxx"
#include "cmExportLibraryDependencies.cxx"
#include "cmFLTKWrapUICommand.cxx"
#include "cmIncludeExternalMSProjectCommand.cxx"
#include "cmInstallProgramsCommand.cxx"
#include "cmLinkLibrariesCommand.cxx"
#include "cmLoadCacheCommand.cxx"
#include "cmOutputRequiredFilesCommand.cxx"
#include "cmQTWrapCPPCommand.cxx"
#include "cmQTWrapUICommand.cxx"
#include "cmRemoveCommand.cxx"
#include "cmRemoveDefinitionsCommand.cxx"
#include "cmSourceGroupCommand.cxx"
#include "cmSubdirDependsCommand.cxx"
#include "cmTargetCompileDefinitionsCommand.cxx"
#include "cmTargetCompileOptionsCommand.cxx"
#include "cmTargetIncludeDirectoriesCommand.cxx"
#include "cmTargetPropCommandBase.cxx"
#include "cmUseMangledMesaCommand.cxx"
#include "cmUtilitySourceCommand.cxx"
#include "cmVariableRequiresCommand.cxx"
#include "cmVariableWatchCommand.cxx"
#include "cmWriteFileCommand.cxx"
// This one must be last because it includes windows.h and
// windows.h #defines GetCurrentDirectory which is a member
// of cmMakefile
#include "cmLoadCommandCommand.cxx"
#endif
void GetPredefinedCommands(std::list<cmCommand*>&
#if defined(CMAKE_BUILD_WITH_CMAKE)
commands
#endif
)
{
#if defined(CMAKE_BUILD_WITH_CMAKE)
commands.push_back(new cmAddCompileOptionsCommand);
commands.push_back(new cmAuxSourceDirectoryCommand);
commands.push_back(new cmBuildNameCommand);
commands.push_back(new cmCMakeHostSystemInformationCommand);
commands.push_back(new cmElseIfCommand);
commands.push_back(new cmExportCommand);
commands.push_back(new cmExportLibraryDependenciesCommand);
commands.push_back(new cmFLTKWrapUICommand);
commands.push_back(new cmIncludeExternalMSProjectCommand);
commands.push_back(new cmInstallProgramsCommand);
commands.push_back(new cmLinkLibrariesCommand);
commands.push_back(new cmLoadCacheCommand);
commands.push_back(new cmLoadCommandCommand);
commands.push_back(new cmOutputRequiredFilesCommand);
commands.push_back(new cmQTWrapCPPCommand);
commands.push_back(new cmQTWrapUICommand);
commands.push_back(new cmRemoveCommand);
commands.push_back(new cmRemoveDefinitionsCommand);
commands.push_back(new cmSourceGroupCommand);
commands.push_back(new cmSubdirDependsCommand);
commands.push_back(new cmTargetIncludeDirectoriesCommand);
commands.push_back(new cmTargetCompileDefinitionsCommand);
commands.push_back(new cmTargetCompileOptionsCommand);
commands.push_back(new cmUseMangledMesaCommand);
commands.push_back(new cmUtilitySourceCommand);
commands.push_back(new cmVariableRequiresCommand);
commands.push_back(new cmVariableWatchCommand);
commands.push_back(new cmWriteFileCommand);
#endif
}

19
Source/cmCommands.cxx.in Normal file
View File

@ -0,0 +1,19 @@
/*============================================================================
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.
============================================================================*/
#include "cmCommands.h"
@COMMAND_INCLUDES@
void GetPredefinedCommands(std::list<cmCommand*>& commands)
{
@NEW_COMMANDS@
}

View File

@ -0,0 +1,16 @@
/*============================================================================
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.
============================================================================*/
#include "cmCommands.h"
void GetPredefinedCommands(std::list<cmCommand*>&)
{
}

View File

@ -9,7 +9,7 @@
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the License for more information.
============================================================================*/
#include "cmExportLibraryDependencies.h"
#include "cmExportLibraryDependenciesCommand.h"
#include "cmGlobalGenerator.h"
#include "cmLocalGenerator.h"
#include "cmGeneratedFileStream.h"

View File

@ -284,7 +284,7 @@ CMAKE_CXX_SOURCES="\
cmNewLineStyle \
cmBootstrapCommands1 \
cmBootstrapCommands2 \
cmCommands \
cmCommandsForBootstrap \
cmTarget \
cmTest \
cmCustomCommand \