ENH: Make add_custom_command interpret relative OUTPUT locations with respect to the build tre instead of the source tree. This can greatly simplify user code since generating a file will not need to reference CMAKE_CURRENT_BINARY_DIR. The new behavior is what users expect 99% of the time.
This commit is contained in:
parent
d5db5a275a
commit
e9503a174e
|
@ -152,7 +152,17 @@ bool cmAddCustomCommandCommand
|
||||||
case doing_outputs:
|
case doing_outputs:
|
||||||
if (!cmSystemTools::FileIsFullPath(copy.c_str()))
|
if (!cmSystemTools::FileIsFullPath(copy.c_str()))
|
||||||
{
|
{
|
||||||
filename = this->Makefile->GetStartDirectory();
|
// This is an output to be generated, so it should be
|
||||||
|
// under the build tree. CMake 2.4 placed this under the
|
||||||
|
// source tree. However the only case that this change
|
||||||
|
// will break is when someone writes
|
||||||
|
//
|
||||||
|
// add_custom_command(OUTPUT out.txt ...)
|
||||||
|
//
|
||||||
|
// and later references "${CMAKE_CURRENT_SOURCE_DIR}/out.txt".
|
||||||
|
// This is fairly obscure so we can wait for someone to
|
||||||
|
// complain.
|
||||||
|
filename = this->Makefile->GetCurrentOutputDirectory();
|
||||||
filename += "/";
|
filename += "/";
|
||||||
}
|
}
|
||||||
filename += copy;
|
filename += copy;
|
||||||
|
|
|
@ -78,6 +78,9 @@ public:
|
||||||
"This defines a new command that can be executed during the build "
|
"This defines a new command that can be executed during the build "
|
||||||
"process. The outputs named should be listed as source files in the "
|
"process. The outputs named should be listed as source files in the "
|
||||||
"target for which they are to be generated. "
|
"target for which they are to be generated. "
|
||||||
|
"If an output name is a relative path it will be interpreted "
|
||||||
|
"relative to the build tree directory corresponding to the current "
|
||||||
|
"source directory. "
|
||||||
"Note that MAIN_DEPENDENCY is completely optional and is "
|
"Note that MAIN_DEPENDENCY is completely optional and is "
|
||||||
"used as a suggestion to visual studio about where to hang the "
|
"used as a suggestion to visual studio about where to hang the "
|
||||||
"custom command. In makefile terms this creates a new target in the "
|
"custom command. In makefile terms this creates a new target in the "
|
||||||
|
|
Loading…
Reference in New Issue