add_custom_command: Allow adding build event via ALIAS target

Signed-off-by: Chen Linxuan <me@black-desk.cn>
This commit is contained in:
Chen Linxuan 2024-01-30 14:11:32 +08:00 committed by Brad King
parent 3cd2c59ecf
commit 3b07ec631d
4 changed files with 19 additions and 3 deletions

View File

@ -554,6 +554,9 @@ one of the keywords to make clear the behavior they expect.
.. versionadded:: 3.21
Support for target-dependent generator expressions.
.. versionadded:: 3.29
The ``<target>`` may be an :ref:`ALIAS target <Alias Targets>`.
Examples: Build Events
^^^^^^^^^^^^^^^^^^^^^^

View File

@ -0,0 +1,5 @@
add_custom_command-target-alias
-------------------------------
* The :ref:`add_custom_command(TARGET) <add_custom_command(TARGET)>`
signature now supports adding build events through :ref:`Alias Targets`.

View File

@ -1144,9 +1144,15 @@ cmTarget* cmMakefile::GetCustomCommandTarget(
const std::string& target, cmObjectLibraryCommands objLibCommands,
const cmListFileBacktrace& lfbt) const
{
// Find the target to which to add the custom command.
auto ti = this->Targets.find(target);
auto realTarget = target;
auto ai = this->AliasTargets.find(target);
if (ai != this->AliasTargets.end()) {
realTarget = ai->second;
}
// Find the target to which to add the custom command.
auto ti = this->Targets.find(realTarget);
if (ti == this->Targets.end()) {
MessageType messageType = MessageType::AUTHOR_WARNING;
bool issueMessage = false;

View File

@ -214,11 +214,13 @@ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/generated_extern.cxx
add_executable(CustomCommandUsingTargetTest main.cxx ${CMAKE_CURRENT_BINARY_DIR}/generated_extern.cxx )
add_executable(CustomCommandUsingTargetTestAlias ALIAS CustomCommandUsingTargetTest )
add_custom_target(RunTarget
COMMAND generator_extern ${CMAKE_CURRENT_BINARY_DIR}/run_target.cxx
)
add_custom_command(TARGET CustomCommandUsingTargetTest POST_BUILD
add_custom_command(TARGET CustomCommandUsingTargetTestAlias POST_BUILD
COMMAND dummy_generator ${CMAKE_CURRENT_BINARY_DIR}/generated_dummy.cxx)
add_subdirectory(GeneratorInExtraDir)