cmake_minimum_required(VERSION 3.26) project(CustomCommandExplicitDepends C) add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/command-option.h" COMMAND "${CMAKE_COMMAND}" -E touch "${CMAKE_CURRENT_BINARY_DIR}/command-option.h" COMMENT "Creating command-option.h" DEPENDS_EXPLICIT_ONLY ) set(CMAKE_ADD_CUSTOM_COMMAND_DEPENDS_EXPLICIT_ONLY ON) add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/command-variable-on.h" COMMAND "${CMAKE_COMMAND}" -E touch "${CMAKE_CURRENT_BINARY_DIR}/command-variable-on.h" COMMENT "Creating command-variable-on.h" ) set(CMAKE_ADD_CUSTOM_COMMAND_DEPENDS_EXPLICIT_ONLY OFF) add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/command-variable-off.h" COMMAND "${CMAKE_COMMAND}" -E touch "${CMAKE_CURRENT_BINARY_DIR}/command-variable-off.h" COMMENT "Creating command-variable-off.h" ) add_library(dep SHARED dep.c) add_library(top SHARED top.c "${CMAKE_CURRENT_BINARY_DIR}/command-option.h" "${CMAKE_CURRENT_BINARY_DIR}/command-variable-on.h" "${CMAKE_CURRENT_BINARY_DIR}/command-variable-off.h" ) target_link_libraries(top PRIVATE dep)