From 4515ab7b7bdc356eb8e95ba9d3f16b43dd80f39c Mon Sep 17 00:00:00 2001 From: Bernhard Guillon Date: Tue, 30 Jun 2026 21:26:33 +0200 Subject: Use CMAKE_RUNTIME_OUTPUT_DIRECTORY for all runtime artifacts --- CMakeLists.txt | 3 +++ baz/CMakeLists.txt | 2 ++ chello/CMakeLists.txt | 4 ---- cmake/dotnet.cmake | 10 +++++----- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7706b85..c026b79 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,6 +5,9 @@ set(DOTNET_ROOT /usr/share/dotnet) set(CSC_DLL ${DOTNET_ROOT}/sdk/10.0.109/Roslyn/bincore/csc.dll) set(RUNTIME_DIR ${DOTNET_ROOT}/shared/Microsoft.NETCore.App/10.0.9) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/runtime) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/runtime) + include(cmake/dotnet.cmake) add_subdirectory(chello) diff --git a/baz/CMakeLists.txt b/baz/CMakeLists.txt index 0c8065e..0813bcc 100644 --- a/baz/CMakeLists.txt +++ b/baz/CMakeLists.txt @@ -1,3 +1,5 @@ add_dotnet_library(Baz SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/Baz.cs ) + +add_dependencies(Baz hello_c) diff --git a/chello/CMakeLists.txt b/chello/CMakeLists.txt index c48ba4b..5edf186 100644 --- a/chello/CMakeLists.txt +++ b/chello/CMakeLists.txt @@ -1,5 +1 @@ add_library(hello_c SHARED hello.c) - -set_target_properties(hello_c PROPERTIES - LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} -) diff --git a/cmake/dotnet.cmake b/cmake/dotnet.cmake index fe0432a..6fca7c4 100644 --- a/cmake/dotnet.cmake +++ b/cmake/dotnet.cmake @@ -9,7 +9,7 @@ function(add_dotnet_library NAME) message(FATAL_ERROR "add_dotnet_library: SOURCES is required") endif() - set(OUTPUT_FILE ${CMAKE_BINARY_DIR}/${NAME}.dll) + set(OUTPUT_FILE ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${NAME}.dll) set(CSC_FLAGS -target:library) foreach(ref IN LISTS arg_REFERENCES) @@ -57,7 +57,7 @@ function(add_dotnet_executable NAME) set(arg_MAIN "Main") endif() - set(OUTPUT_FILE ${CMAKE_BINARY_DIR}/${NAME}.dll) + set(OUTPUT_FILE ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${NAME}.dll) set(CSC_FLAGS -target:exe -main:${arg_MAIN}) foreach(ref IN LISTS arg_REFERENCES) @@ -77,7 +77,7 @@ function(add_dotnet_executable NAME) ${arg_SOURCES} COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/HelloCMake.runtimeconfig.json - ${CMAKE_BINARY_DIR}/${NAME}.runtimeconfig.json + ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${NAME}.runtimeconfig.json DEPENDS ${arg_SOURCES} COMMENT "Compiling ${NAME} with Roslyn csc..." COMMAND_EXPAND_LISTS @@ -117,7 +117,7 @@ function(target_link_dotnet_libraries TARGET) if(NOT CURRENT_ALL) set(CURRENT_ALL "") endif() - list(APPEND CURRENT_ALL "-reference:${CMAKE_BINARY_DIR}/${lib}.dll") + list(APPEND CURRENT_ALL "-reference:${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${lib}.dll") list(APPEND CURRENT_ALL ${LIB_PUB_REFS}) set_target_properties(${TARGET} PROPERTIES DOTNET_ALL_REFS "${CURRENT_ALL}") @@ -126,7 +126,7 @@ function(target_link_dotnet_libraries TARGET) if(NOT CURRENT_PUB) set(CURRENT_PUB "") endif() - list(APPEND CURRENT_PUB "-reference:${CMAKE_BINARY_DIR}/${lib}.dll") + list(APPEND CURRENT_PUB "-reference:${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${lib}.dll") list(APPEND CURRENT_PUB ${LIB_PUB_REFS}) list(REMOVE_DUPLICATES CURRENT_PUB) set_target_properties(${TARGET} PROPERTIES DOTNET_PUBLIC_REFS "${CURRENT_PUB}") -- cgit v1.2.3