diff options
| author | Bernhard Guillon <Bernhard.Guillon@begu.org> | 2026-06-30 20:08:07 +0200 |
|---|---|---|
| committer | Bernhard Guillon <Bernhard.Guillon@begu.org> | 2026-06-30 20:08:07 +0200 |
| commit | 5ec50e41ea76d26bac1686672a8cff2248465f98 (patch) | |
| tree | be7766a1f95de5b75b6319e5ac4991a5dabb3eb5 | |
| parent | bf63fc33e76773247523d5d973dd4639acb7371a (diff) | |
| download | csharp-cmake-5ec50e41ea76d26bac1686672a8cff2248465f98.tar.gz csharp-cmake-5ec50e41ea76d26bac1686672a8cff2248465f98.zip | |
cool ^^ what a nice thing
| -rw-r--r-- | CMakeLists.txt | 24 | ||||
| -rw-r--r-- | HelloCMake.runtimeconfig.json | 9 |
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" + } + } +} |
