summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt3
-rw-r--r--baz/CMakeLists.txt2
-rw-r--r--chello/CMakeLists.txt4
-rw-r--r--cmake/dotnet.cmake10
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}")