diff options
author | Andy Cedilnik <andy.cedilnik@kitware.com> | 2002-01-03 21:02:43 (GMT) |
---|---|---|
committer | Andy Cedilnik <andy.cedilnik@kitware.com> | 2002-01-03 21:02:43 (GMT) |
commit | 58ee8555032478147f46d1876291feb6a9a57904 (patch) | |
tree | 74f89187ae9f34050372741018bbffd99a8c9ae0 | |
parent | 0333f15b96ebe0308ef3d04a0ec9a434d3a0be40 (diff) | |
download | CMake-58ee8555032478147f46d1876291feb6a9a57904.zip CMake-58ee8555032478147f46d1876291feb6a9a57904.tar.gz CMake-58ee8555032478147f46d1876291feb6a9a57904.tar.bz2 |
Fix add custom command so that it actually executes the code
-rw-r--r-- | Source/cmAddCustomCommandCommand.cxx | 25 | ||||
-rw-r--r-- | Source/cmAddCustomCommandCommand.h | 18 |
2 files changed, 43 insertions, 0 deletions
diff --git a/Source/cmAddCustomCommandCommand.cxx b/Source/cmAddCustomCommandCommand.cxx index e9ee41f..c4c45a2 100644 --- a/Source/cmAddCustomCommandCommand.cxx +++ b/Source/cmAddCustomCommandCommand.cxx @@ -31,6 +31,7 @@ bool cmAddCustomCommandCommand::InitialPass(std::vector<std::string> const& args std::string source, command, target; std::vector<std::string> command_args, depends, outputs; + std::string outDir = m_Makefile->GetCurrentOutputDirectory(); enum tdoing { doing_source, @@ -129,7 +130,31 @@ bool cmAddCustomCommandCommand::InitialPass(std::vector<std::string> const& args depends, outputs, target.c_str()); + + int cc = outputs.size()-1; + while( cc >= 0 ) + { + std::string fileName = outputs[cc]; + + std::string directory = cmSystemTools::GetFilenamePath(fileName); + if ( directory == std::string() ) + { + directory = outDir; + } + fileName = cmSystemTools::GetFilenameName(fileName); + + std::string::size_type pos = fileName.rfind("."); + fileName = fileName.substr(0, pos); + // Add the generated source to the package target's source list. + cmSourceFile file; + file.SetName(fileName.c_str(), directory.c_str(), "c", false); + m_Makefile->AddSource(file, target.c_str()); + cc--; + } + m_Makefile->GetTargets()[target.c_str()].GetSourceLists().push_back(target); + return true; } + diff --git a/Source/cmAddCustomCommandCommand.h b/Source/cmAddCustomCommandCommand.h index 61ee2ba..eaa5080 100644 --- a/Source/cmAddCustomCommandCommand.h +++ b/Source/cmAddCustomCommandCommand.h @@ -24,7 +24,25 @@ * * cmAddCustomCommandCommand defines a new command that can * be executed within the CMake + * + * In makefile terms this creates new target in the following form: + * OUTPUT1: SOURCE DEPENDS + * COMMAND ARGS + * OUTPUT2: SOURCE DEPENDS + * COMMAND ARGS + * ... + * Example of usage: + * ADD_CUSTOM_COMMAND( + * SOURCE ${VTK_TIFF_FAX_EXE} + * COMMAND ${VTK_TIFF_FAX_EXE} + * ARGS -c const ${VTK_BINARY_DIR}/Utilities/tiff/tif_fax3sm.c + * TARGET vtktiff + * OUTPUTS ${VTK_BINARY_DIR}/Utilities/tiff/tif_fax3sm.c + * ) + * This will create custom target which will generate file tif_fax3sm.c + * using command ${VTK_TIFF_FAX_EXE}. */ + class cmAddCustomCommandCommand : public cmCommand { public: |