ENH: added a config setup file for CMakeSetup. Cleaned up the names of the source and binary directories

This commit is contained in:
Bill Hoffman 2000-09-18 09:19:38 -04:00
parent 38f5ab8527
commit 283d3a0b73
13 changed files with 137 additions and 36 deletions

View File

@ -6,14 +6,14 @@
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
all: CMakeTargets.make ${OBJ_SUB_DIRS} ${EXECUTABLES} ${SUBDIR_BUILD} ${BUILD_LIB_FILE} ${LOCAL_BUILD_TARGETS} ${CMAKE} all: CMakeTargets.make ${LOCAL_BUILD_TARGETS} ${BUILD_LIB_FILE} ${EXECUTABLES} ${SUBDIR_BUILD} ${CMAKE}
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
${CMAKE}: ${topdir}/CMake/Source/*.cxx ${topdir}/CMake/Source/*.h ${CMAKE}: ${topdir}/CMake/Source/*.cxx ${topdir}/CMake/Source/*.h
cd ${CMAKE_CONFIG_DIR}/CMake/Source; ${MAKE} CMakeBuildTargets cd ${CMAKE_CONFIG_DIR}/CMake/Source; ${MAKE} CMakeBuildTargets
depend: ${CMAKE} depend: ${CMAKE} ${SUBDIR_DEPEND}
${MAKE} -${MAKEFLAGS} CMakeTargets.make ${MAKE} -${MAKEFLAGS} CMakeTargets.make

View File

@ -3,15 +3,19 @@
# CMakeLocal.make.in should be in the directory where you run configure # CMakeLocal.make.in should be in the directory where you run configure
# in, which need not be the source directory # in, which need not be the source directory
# The following LOCAL_* variables can be overridden in the CMakeLists.txt
# files directly, inside the VERBATIM section. However, that will
# not be used on the windows build, so keep it to unix things.
#
# use this to add targets to the default all # use this to add targets to the default all
# so they are built when make is run by default # so they are built when make is run by default
LOCAL_BUILD_TARGETS = # LOCAL_BUILD_TARGETS =
# use this flag to add -L and -l options to the link line # use this flag to add -L and -l options to the link line
LOCAL_LINK_FLAGS = # LOCAL_LINK_FLAGS =
# use this flag to add -I flags to the compile line # use this flag to add -I flags to the compile line
LOCAL_INCLUDE_FLAGS = # LOCAL_INCLUDE_FLAGS =
# use this flag to add compiler options like -g -O, etc # use this flag to add compiler options like -g -O, etc
# for the "C" compiler, for gcc these default to -g -O2 # for the "C" compiler, for gcc these default to -g -O2

15
README
View File

@ -1,14 +1,29 @@
CMakeLists.txt -> File in each directory that contains classes, exe, etc CMakeLists.txt -> File in each directory that contains classes, exe, etc
CMakeLists.txt contains the following: CMakeLists.txt contains the following:
# build targets
WIN32_CLASSES = WIN32_CLASSES =
UNIX_CLASSES = UNIX_CLASSES =
ABSTRACT_CLASSES = ABSTRACT_CLASSES =
SUBDIRS = SUBDIRS =
EXECUTABLES = EXECUTABLES =
# make flags
# make flags can use these varibles:
# ${CMAKE_BINARY_DIR} The root of the build tree where the binaries are
# ${CMAKE_SOURCE_ROOT} The root of the source tree where configure is
INCLUDE_DIRECTORIES =
LINK_DIRECTORIES =
LINK_LIBRARIES = # use the same name as ME =
WIN32_LIBRARIES =
UNIX_LIBRARIES =
# name of the library to build
ME = ME =
# add make commands
BEGIN MAKE VERBATIM BEGIN MAKE VERBATIM
... # copy stuff into CMakeTargets.make directly ... # copy stuff into CMakeTargets.make directly
LOCAL_BUILD_TARGETS = // These are done first before anything else
END MAKE VERBATIM END MAKE VERBATIM
TEMPLATE_INSTANCE_DIR = TEMPLATE_INSTANCE_DIR =

View File

@ -144,10 +144,6 @@ SOURCE=..\cmWindowsConfigure.cxx
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=..\itkVC60Configure.cxx
# End Source File
# Begin Source File
SOURCE=.\StdAfx.cpp SOURCE=.\StdAfx.cpp
# ADD CPP /Yc"stdafx.h" # ADD CPP /Yc"stdafx.h"
# End Source File # End Source File

View File

@ -95,10 +95,10 @@ BEGIN
PUSHBUTTON "Cancel",IDCANCEL,260,23,50,14 PUSHBUTTON "Cancel",IDCANCEL,260,23,50,14
EDITTEXT IDC_WhereSource,13,27,135,13,ES_AUTOHSCROLL EDITTEXT IDC_WhereSource,13,27,135,13,ES_AUTOHSCROLL
PUSHBUTTON "Browse...",IDC_BUTTON2,150,28,43,13 PUSHBUTTON "Browse...",IDC_BUTTON2,150,28,43,13
LTEXT "Where is the Insight Source",IDC_STATIC,14,15,104,9 LTEXT "Where is the source code:",IDC_STATIC,15,15,104,9
EDITTEXT IDC_WhereBuild,16,67,133,13,ES_AUTOHSCROLL EDITTEXT IDC_WhereBuild,14,67,133,13,ES_AUTOHSCROLL
PUSHBUTTON "Browse...",IDC_BUTTON3,151,66,43,13 PUSHBUTTON "Browse...",IDC_BUTTON3,151,66,43,13
LTEXT "Where do you want to build the binaries",IDC_STATIC,16, LTEXT "Where do you want to build the binaries:",IDC_STATIC,16,
56,128,9 56,128,9
END END
@ -161,14 +161,6 @@ BEGIN
TOPMARGIN, 7 TOPMARGIN, 7
BOTTOMMARGIN, 48 BOTTOMMARGIN, 48
END END
IDD_CMAKESETUPDIALOG_DIALOG, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 313
TOPMARGIN, 7
BOTTOMMARGIN, 193
END
END END
#endif // APSTUDIO_INVOKED #endif // APSTUDIO_INVOKED

View File

@ -5,7 +5,7 @@
#include "CMakeSetup.h" #include "CMakeSetup.h"
#include "CMakeSetupDialog.h" #include "CMakeSetupDialog.h"
#include "../cmDSWMakefile.h" #include "../cmDSWMakefile.h"
#include "../itkVC60Configure.h" #include "../cmWindowsConfigure.h"
#ifdef _DEBUG #ifdef _DEBUG
#define new DEBUG_NEW #define new DEBUG_NEW
@ -227,10 +227,21 @@ void CMakeSetupDialog::OnOK()
this->UpdateData(); this->UpdateData();
// configure the system for VC60 // configure the system for VC60
itkVC60Configure config; cmWindowsConfigure config;
config.SetWhereSource(m_WhereSource); config.SetWhereSource(m_WhereSource);
config.SetWhereBuild(m_WhereBuild); config.SetWhereBuild(m_WhereBuild);
config.Configure(); std::string configSrc;
configSrc = m_WhereSource;
configSrc += "/CMakeSetupConfig.MSC";
if(!config.Configure(configSrc.c_str()))
{
std::string error = "Error: in configuring system from: ";
error += configSrc;
error += "\nProject NOT created!";
::MessageBox(0, error.c_str(), "config ERROR", MB_OK);
return;
}
cmDSWMakefile builder; cmDSWMakefile builder;
// Set the ITK home directory // Set the ITK home directory

View File

@ -1,6 +1,6 @@
//{{NO_DEPENDENCIES}} //{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file. // Microsoft Developer Studio generated include file.
// Used by pcbuilder.rc // Used by CMakeSetup.rc
// //
#define IDM_ABOUTBOX 0x0010 #define IDM_ABOUTBOX 0x0010
#define IDD_ABOUTBOX 100 #define IDD_ABOUTBOX 100

View File

@ -21,9 +21,9 @@ void cmDSPMakefile::OutputDSPFile()
for(i = includes.begin(); i != includes.end(); ++i) for(i = includes.begin(); i != includes.end(); ++i)
{ {
std::string include = *i; std::string include = *i;
cmSystemTools::ReplaceString(include, "${CMAKE_CONFIG_DIR}", cmSystemTools::ReplaceString(include, "${CMAKE_BINARY_DIR}",
this->GetOutputHomeDirectory() ); this->GetOutputHomeDirectory() );
cmSystemTools::ReplaceString(include, "${srcdir}", cmSystemTools::ReplaceString(include, "${CMAKE_SOURCE_ROOT}",
this->GetHomeDirectory() ); this->GetHomeDirectory() );
m_IncludeOptions += "/I \""; m_IncludeOptions += "/I \"";
m_IncludeOptions += include; m_IncludeOptions += include;
@ -48,7 +48,7 @@ void cmDSPMakefile::OutputDSPFile()
{ {
m_DebugLibraryOptions += " /LIBPATH:\""; m_DebugLibraryOptions += " /LIBPATH:\"";
m_DebugLibraryOptions += *i; m_DebugLibraryOptions += *i;
cmSystemTools::ReplaceString(m_DebugLibraryOptions, "${CMAKE_CONFIG_DIR}", cmSystemTools::ReplaceString(m_DebugLibraryOptions, "${CMAKE_BINARY_DIR}",
this->GetOutputHomeDirectory() ); this->GetOutputHomeDirectory() );
if(i->find("Debug") == std::string::npos) if(i->find("Debug") == std::string::npos)
{ {

View File

@ -21,9 +21,9 @@ void cmDSPMakefile::OutputDSPFile()
for(i = includes.begin(); i != includes.end(); ++i) for(i = includes.begin(); i != includes.end(); ++i)
{ {
std::string include = *i; std::string include = *i;
cmSystemTools::ReplaceString(include, "${CMAKE_CONFIG_DIR}", cmSystemTools::ReplaceString(include, "${CMAKE_BINARY_DIR}",
this->GetOutputHomeDirectory() ); this->GetOutputHomeDirectory() );
cmSystemTools::ReplaceString(include, "${srcdir}", cmSystemTools::ReplaceString(include, "${CMAKE_SOURCE_ROOT}",
this->GetHomeDirectory() ); this->GetHomeDirectory() );
m_IncludeOptions += "/I \""; m_IncludeOptions += "/I \"";
m_IncludeOptions += include; m_IncludeOptions += include;
@ -48,7 +48,7 @@ void cmDSPMakefile::OutputDSPFile()
{ {
m_DebugLibraryOptions += " /LIBPATH:\""; m_DebugLibraryOptions += " /LIBPATH:\"";
m_DebugLibraryOptions += *i; m_DebugLibraryOptions += *i;
cmSystemTools::ReplaceString(m_DebugLibraryOptions, "${CMAKE_CONFIG_DIR}", cmSystemTools::ReplaceString(m_DebugLibraryOptions, "${CMAKE_BINARY_DIR}",
this->GetOutputHomeDirectory() ); this->GetOutputHomeDirectory() );
if(i->find("Debug") == std::string::npos) if(i->find("Debug") == std::string::npos)
{ {

View File

@ -48,9 +48,9 @@ void cmMakeDepend::SetMakefile(cmMakefile* makefile)
std::vector<std::string>::iterator j; std::vector<std::string>::iterator j;
for(j = includes.begin(); j != includes.end(); ++j) for(j = includes.begin(); j != includes.end(); ++j)
{ {
cmSystemTools::ReplaceString(*j, "${CMAKE_CONFIG_DIR}", cmSystemTools::ReplaceString(*j, "${CMAKE_BINARY_DIR}",
m_Makefile->GetOutputHomeDirectory() ); m_Makefile->GetOutputHomeDirectory() );
cmSystemTools::ReplaceString(*j, "${srcdir}", cmSystemTools::ReplaceString(*j, "${CMAKE_SOURCE_ROOT}",
m_Makefile->GetHomeDirectory() ); m_Makefile->GetHomeDirectory() );
this->AddSearchPath(j->c_str()); this->AddSearchPath(j->c_str());
} }

View File

@ -1,4 +1,5 @@
#include "cmUnixMakefile.h" #include "cmUnixMakefile.h"
#include "cmSystemTools.h"
#include <fstream> #include <fstream>
#include <iostream> #include <iostream>
@ -143,6 +144,9 @@ void cmUnixMakefile::OutputMakefile(const char* file)
linkLibs += " "; linkLibs += " ";
} }
linkLibs += " ${LOCAL_LINK_FLAGS} "; linkLibs += " ${LOCAL_LINK_FLAGS} ";
cmSystemTools::ReplaceString(linkLibs, "${CMAKE_BINARY_DIR}",
this->GetOutputHomeDirectory() );
cout << "link libs = " << linkLibs.c_str() << endl;
// Now create rules for all of the executables to be built // Now create rules for all of the executables to be built
for(int i = 0; i < m_Classes.size(); i++) for(int i = 0; i < m_Classes.size(); i++)
{ {

View File

@ -1,2 +1,81 @@
#include "cmWindowsConfigure.h" #include "cmWindowsConfigure.h"
#include "cmSystemTools.h"
#include <fstream>
#include <windows.h>
bool cmWindowsConfigure::Configure(const char* file)
{
std::ifstream fin(file);
if(!fin)
{
return false;
}
char inbuf[5001];
while(fin.getline(inbuf, 5000) )
{
std::string inputLine = inbuf;
if(inputLine[0] != '#')
{
std::string destDir;
std::string fromFile;
std::string toFile;
std::string::size_type pos = inputLine.find(':');
if(pos != std::string::npos)
{
destDir = inputLine.substr(0, pos);
std::string::size_type nextPos = inputLine.find(':', pos+1);
if(nextPos != std::string::npos)
{
std::string toFileName = inputLine.substr(pos+1, nextPos-pos-1);
fromFile = inputLine.substr(nextPos+1);
toFile = destDir;
toFile += "/";
toFile += toFileName;
cmSystemTools::ReplaceString(toFile, "${CMAKE_BINARY_DIR}",
m_WhereBuild.c_str() );
cmSystemTools::ReplaceString(toFile, "${CMAKE_SOURCE_ROOT}",
m_WhereSource.c_str() );
cmSystemTools::ReplaceString(fromFile, "${CMAKE_BINARY_DIR}",
m_WhereBuild.c_str() );
cmSystemTools::ReplaceString(fromFile, "${CMAKE_SOURCE_ROOT}",
m_WhereSource.c_str() );
cmSystemTools::ReplaceString(destDir, "${CMAKE_BINARY_DIR}",
m_WhereBuild.c_str() );
cmSystemTools::ReplaceString(destDir, "${CMAKE_SOURCE_ROOT}",
m_WhereSource.c_str() );
}
}
if(destDir != "" && fromFile != "" && toFile != "")
{
if(!cmSystemTools::MakeDirectory(destDir.c_str()) )
{
std::string error = "Error: can not create directory: ";
error += destDir;
MessageBox(0, error.c_str(), "config ERROR", MB_OK);
return false;
}
if(!CopyFile(fromFile.c_str(), toFile.c_str(), FALSE))
{
std::string error = "Error: can not copy : ";
error += fromFile;
error += " to ";
error += toFile;
MessageBox(0, error.c_str(), "config ERROR", MB_OK);
return false;
}
}
else if (inputLine != "")
{
std::string error = "Error in parsing : ";
error += file;
error += " in line:\n ";
error += inputLine;
MessageBox(0, error.c_str(), "config ERROR", MB_OK);
return false;
}
}
}
return true;
}

View File

@ -40,7 +40,7 @@ public:
{ {
m_WhereBuild = dir; m_WhereBuild = dir;
} }
virtual void Configure() = 0; virtual bool Configure(const char* input);
protected: protected:
std::string m_WhereSource; std::string m_WhereSource;
std::string m_WhereBuild; std::string m_WhereBuild;