From bf2f3e0acdf98020295732a3a63b7ddbc64a6d6a Mon Sep 17 00:00:00 2001 From: Bernhard Guillon Date: Tue, 30 Jun 2026 21:41:32 +0200 Subject: Fix rebuild tracking by adding DEPENDS parameter for .dll file-level dependencies --- cmake/dotnet.cmake | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) (limited to 'cmake/dotnet.cmake') diff --git a/cmake/dotnet.cmake b/cmake/dotnet.cmake index 4c5c4ca..cd848e2 100644 --- a/cmake/dotnet.cmake +++ b/cmake/dotnet.cmake @@ -1,5 +1,5 @@ function(add_dotnet_library NAME) - set(multiValueArgs SOURCES REFERENCES) + set(multiValueArgs SOURCES REFERENCES DEPENDS) cmake_parse_arguments(PARSE_ARGV 1 arg "" "" "${multiValueArgs}" @@ -16,6 +16,11 @@ function(add_dotnet_library NAME) list(APPEND CSC_FLAGS "-reference:${ref}") endforeach() + set(DEPS "") + foreach(dep IN LISTS arg_DEPENDS) + list(APPEND DEPS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${dep}.dll) + endforeach() + add_custom_command( OUTPUT ${OUTPUT_FILE} COMMAND dotnet ${CSC_DLL} @@ -27,13 +32,17 @@ function(add_dotnet_library NAME) -reference:System.Runtime.dll -reference:System.Console.dll ${arg_SOURCES} - DEPENDS ${arg_SOURCES} + DEPENDS ${arg_SOURCES} ${DEPS} COMMENT "Compiling ${NAME} library with Roslyn csc..." COMMAND_EXPAND_LISTS ) add_custom_target(${NAME} ALL DEPENDS ${OUTPUT_FILE}) + foreach(dep IN LISTS arg_DEPENDS) + add_dependencies(${NAME} ${dep}) + endforeach() + set_target_properties(${NAME} PROPERTIES DOTNET_ALL_REFS "" DOTNET_PUBLIC_REFS "" @@ -43,7 +52,7 @@ endfunction() function(add_dotnet_executable NAME) set(oneValueArgs MAIN) - set(multiValueArgs SOURCES REFERENCES) + set(multiValueArgs SOURCES REFERENCES DEPENDS) cmake_parse_arguments(PARSE_ARGV 1 arg "" "${oneValueArgs}" "${multiValueArgs}" @@ -71,6 +80,11 @@ function(add_dotnet_executable NAME) COPYONLY ) + set(DEPS ${RUNTIMECONFIG}) + foreach(dep IN LISTS arg_DEPENDS) + list(APPEND DEPS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${dep}.dll) + endforeach() + add_custom_command( OUTPUT ${OUTPUT_FILE} COMMAND dotnet ${CSC_DLL} @@ -82,13 +96,17 @@ function(add_dotnet_executable NAME) -reference:System.Runtime.dll -reference:System.Console.dll ${arg_SOURCES} - DEPENDS ${arg_SOURCES} ${RUNTIMECONFIG} + DEPENDS ${arg_SOURCES} ${DEPS} COMMENT "Compiling ${NAME} with Roslyn csc..." COMMAND_EXPAND_LISTS ) add_custom_target(${NAME} ALL DEPENDS ${OUTPUT_FILE}) + foreach(dep IN LISTS arg_DEPENDS) + add_dependencies(${NAME} ${dep}) + endforeach() + set_target_properties(${NAME} PROPERTIES DOTNET_ALL_REFS "" DOTNET_PUBLIC_REFS "" -- cgit v1.2.3