summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBernhard Guillon <Bernhard.Guillon@begu.org>2026-06-30 20:08:07 +0200
committerBernhard Guillon <Bernhard.Guillon@begu.org>2026-06-30 20:08:07 +0200
commit5ec50e41ea76d26bac1686672a8cff2248465f98 (patch)
treebe7766a1f95de5b75b6319e5ac4991a5dabb3eb5
parentbf63fc33e76773247523d5d973dd4639acb7371a (diff)
downloadcsharp-cmake-5ec50e41ea76d26bac1686672a8cff2248465f98.tar.gz
csharp-cmake-5ec50e41ea76d26bac1686672a8cff2248465f98.zip
cool ^^ what a nice thing
-rw-r--r--CMakeLists.txt24
-rw-r--r--HelloCMake.runtimeconfig.json9
2 files changed, 26 insertions, 7 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index fbd7581..b76d217 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,21 +1,31 @@
cmake_minimum_required(VERSION 4.3)
project(HelloCMake)
-find_program(CSC_EXECUTABLE NAMES csc csc.exe)
-if(NOT CSC_EXECUTABLE)
- message(FATAL_ERROR "C# compiler (csc) not found!")
-endif()
+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(OUTPUT_DIR ${CMAKE_BINARY_DIR})
set(SOURCES ${CMAKE_SOURCE_DIR}/Program.cs)
set(TARGET HelloCMake)
-set(OUTPUT_FILE ${OUTPUT_DIR}/${TARGET}.exe)
+set(OUTPUT_FILE ${OUTPUT_DIR}/${TARGET}.dll)
add_custom_command(
OUTPUT ${OUTPUT_FILE}
- COMMAND ${CSC_EXECUTABLE} /target:exe /out:${OUTPUT_FILE} ${SOURCES}
+ COMMAND dotnet ${CSC_DLL}
+ -target:exe
+ -out:${OUTPUT_FILE}
+ -lib:${RUNTIME_DIR}
+ -reference:System.Private.CoreLib.dll
+ -reference:System.Runtime.dll
+ -reference:System.Console.dll
+ -main:Program
+ ${SOURCES}
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different
+ ${CMAKE_SOURCE_DIR}/HelloCMake.runtimeconfig.json
+ ${OUTPUT_DIR}/${TARGET}.runtimeconfig.json
DEPENDS ${SOURCES}
- COMMENT "Compiling ${TARGET} with csc..."
+ COMMENT "Compiling ${TARGET} with Roslyn csc..."
)
add_custom_target(${TARGET} ALL DEPENDS ${OUTPUT_FILE})
diff --git a/HelloCMake.runtimeconfig.json b/HelloCMake.runtimeconfig.json
new file mode 100644
index 0000000..e431d27
--- /dev/null
+++ b/HelloCMake.runtimeconfig.json
@@ -0,0 +1,9 @@
+{
+ "runtimeOptions": {
+ "tfm": "net10.0",
+ "framework": {
+ "name": "Microsoft.NETCore.App",
+ "version": "10.0.0"
+ }
+ }
+}