Ninja Multi-Config: Add support for DEPFILE option in add_custom_command()
And give other generators a path forward to add support in the future.
This commit is contained in:
parent
ad17c37d34
commit
67102d3252
@ -174,7 +174,7 @@ bool cmAddCustomCommandCommand(std::vector<std::string> const& args,
|
||||
doing = doing_comment;
|
||||
} else if (copy == keyDEPFILE) {
|
||||
doing = doing_depfile;
|
||||
if (mf.GetGlobalGenerator()->GetName() != "Ninja") {
|
||||
if (!mf.GetGlobalGenerator()->SupportsCustomCommandDepfile()) {
|
||||
status.SetError("Option DEPFILE not supported by " +
|
||||
mf.GetGlobalGenerator()->GetName());
|
||||
return false;
|
||||
|
@ -448,6 +448,8 @@ public:
|
||||
MacFolder. */
|
||||
virtual bool ShouldStripResourcePath(cmMakefile*) const;
|
||||
|
||||
virtual bool SupportsCustomCommandDepfile() const { return false; }
|
||||
|
||||
std::string GetSharedLibFlagsForLanguage(std::string const& lang) const;
|
||||
|
||||
/** Generate an <output>.rule file path for a given command output. */
|
||||
|
@ -211,6 +211,8 @@ public:
|
||||
}
|
||||
const char* GetCleanTargetName() const override { return "clean"; }
|
||||
|
||||
bool SupportsCustomCommandDepfile() const override { return true; }
|
||||
|
||||
virtual cmGeneratedFileStream* GetImplFileStream(
|
||||
const std::string& /*config*/) const
|
||||
{
|
||||
|
@ -0,0 +1,5 @@
|
||||
set(log "${RunCMake_BINARY_DIR}/CustomCommandDepfile-build/CMakeFiles/impl-Debug.ninja")
|
||||
file(READ "${log}" build_file)
|
||||
if(NOT "${build_file}" MATCHES "depfile = test\\.d")
|
||||
set(RunCMake_TEST_FAILED "Log file:\n ${log}\ndoes not have expected line: depfile = test.d")
|
||||
endif()
|
@ -0,0 +1,9 @@
|
||||
add_custom_command(
|
||||
OUTPUT main.copy.c
|
||||
COMMAND "${CMAKE_COMMAND}" -E copy
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/main.c"
|
||||
main.copy.c
|
||||
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
|
||||
DEPFILE "test.d"
|
||||
)
|
||||
add_custom_target(copy ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/main.copy.c")
|
@ -224,6 +224,10 @@ run_ninja(CustomCommandsAndTargets release-postbuild build-Release.ninja SubdirP
|
||||
run_cmake_build(CustomCommandsAndTargets debug-targetpostbuild Debug TopTargetPostBuild)
|
||||
run_ninja(CustomCommandsAndTargets release-targetpostbuild build-Release.ninja SubdirTargetPostBuild)
|
||||
|
||||
unset(RunCMake_TEST_BINARY_DIR)
|
||||
|
||||
run_cmake(CustomCommandDepfile)
|
||||
|
||||
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/PostfixAndLocation-build)
|
||||
set(RunCMake_TEST_OPTIONS "-DCMAKE_CONFIGURATION_TYPES=Debug\\;Release;-DCMAKE_NMC_CROSS_CONFIGS=all")
|
||||
run_cmake_configure(PostfixAndLocation)
|
||||
|
Loading…
Reference in New Issue
Block a user