Hardware > Emulatoren

AtariX => MagicOnLinux

<< < (102/107) > >>

AndreasKromke:
Etwas Grundlagen:

Früher hat man ein Projekt ein "Makefile" geschrieben. Das ist eine Textdatei. Sie enthält eine Liste aller Quelltextdateien, die übersetzt werden müssen, und die Anweisungen, wie sie übersetzt werden müssen. Außerdem konnte man noch Abhängigkeiten angeben, damit bei Änderung von Datei A automatisch die Dateien X und Y neu übersetzt werden und der Linker das Programm neu bindet.

Die Datei hieß i.a. "Makefile", und man hat im selben Verzeichnis das Kommando "make" aufgerufen. Das kann man heute noch so machen und ist für kleinere Programme auch legitim.

Für größere Programme schreibt man heute das "Makefile" nicht mehr selbst, sondern benutzt einen Makefile-Generator. Davon gibt es mehrere, und cmake ist der weitestverbreitete. Ein Vorteil von cmake ist, daß man unterschiedliche Betriebssysteme und Compiler berücksichtigen kann. So erzeugt cmake je nach Umgebung ein angepaßtes "Makefile" mit entsprechenden Compiler-Einstellungen.

Die zentrale Steuerdatei für cmake ist i.a. "CMakeLists.txt". Hieraus macht cmake dann das Makefile. Damit man sein Projektverzeichnis nicht mit Kompilaten vollschreibt (man möchte Quelltexte trennen von den Dateien, die temporär erzeugt werden), verwendet man ein "build"-Verzeichnis. Nach Konvention heißt es "build", der Name ist aber egal. Fast alle modernen Programme werden so erzeugt:


* Ein "build"-Verzeichnis wird erzeugt und betreten. Hier landet der ganze temporäre Müll, aber auch das fertige Programm.
* Man ruft "cmake .." auf, dabei ist ".." der Parameter, mit Leerzeidchen getrennt, der dem cmake sagt wo es die Datei CMakeLists.txt suchen soll.
* Das cmake rattert rum, macht dies, das, Ananas und erzeugt schließlich ein "Makefile".
* Wie oben beschrieben, kann man jetzt per "make" den Bau-Prozeß starten.
* Abschließend kann man den "build"-Ordner wieder verlassen.
Das cmake sollte in das "Makefile" einen Mechanismus einbauen, der erkennt, wenn das "Makefile" selbst neu erzeugt werden muß, also von der Theorie her braucht man cmake fürderhin nicht mehr zu starten, sondern immer nur make, es sei denn es geht etwas schief. Wenn man Quelltextdateien hinzufügt oder entfernt, könnte das nötig sein.

Abschließend: Man kann dem "cmake" auch Parameter mitgeben, um die Generierung des Makefile zu beeinflussen, z.B. wenn man einen "debug build" will. Warum man das nicht später beim make festlegt? Keine Ahnung, bin kein cmake-Spezialist ...

don_apple:

--- Zitat von: Lukas Frank am Sa 18.04.2026, 09:34:16 ---Soweit bin ich jetzt ...


Franks-MacMini:~ frank$ cd magiclinux
Franks-MacMini:magiclinux frank$ mkdir build
Franks-MacMini:magiclinux frank$ cd build
Franks-MacMini:build frank$ cmake -G Xcode ..
-- The C compiler identification is AppleClang 21.0.0.21000099
-- The CXX compiler identification is AppleClang 21.0.0.21000099
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found PkgConfig: /opt/homebrew/bin/pkg-config (found version "2.5.1")
-- Checking for module 'sdl2'
--   Found sdl2, version 2.32.10
-- Checking for module 'sdl2_mixer'
--   Found sdl2_mixer, version 2.8.1
-- Configuring done (5.9s)
-- Generating done (0.0s)
-- Build files have been written to: /Users/frank/magiclinux/build
Franks-MacMini:build frank$

--- Ende Zitat ---
Wie in https://gitlab.com/AndreasK/magiclinux/-/blob/main/MACOS.txt?ref_type=heads beschrieben must du nach dem cmake das unter Punkt „4a“ angegebene xcodebuild Kommando ausführen damit die Programmdatei erzeugt wird.

Lukas Frank:
Franks-MacMini:build frank$ pwd
/Users/frank/magiclinux/build/build
Franks-MacMini:build frank$ xcodebuild -project MagicOnLinux.xcodeproj \
>              -target magic-on-linux \
>              -configuration Release \
>              build
Command line invocation:
    /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -project MagicOnLinux.xcodeproj -target magic-on-linux -configuration Release build

2026-04-19 11:17:56.977 xcodebuild[3324:103793] Writing error result bundle to /var/folders/41/mvsx3xbn21n5fhhf9t9csf280000gp/T/ResultBundle_2026-19-04_11-17-0056.xcresult
xcodebuild: error: 'MagicOnLinux.xcodeproj' does not exist.
Franks-MacMini:build frank$

----------------
... bekomme das nicht hin.

Wieso gibt es das nicht als fertiges Paket ...?

Lukas Frank:
Fehler im build path von mir ...

---------- Jetzt ging es -------------
RegisterExecutionPolicyException /Users/frank/magiclinux/build/Release/magic-on-linux (in target 'magic-on-linux' from project 'MagicOnLinux')
    cd /Users/frank/magiclinux
    builtin-RegisterExecutionPolicyException /Users/frank/magiclinux/build/Release/magic-on-linux

note: Run script build phase 'Generate CMakeFiles/ZERO_CHECK' will be run during every build because the option to run the script phase "Based on dependency analysis" is unchecked. (in target 'ZERO_CHECK' from project 'MagicOnLinux')
** BUILD SUCCEEDED **

Franks-MacMini:build frank$ magic-on-linux
-bash: magic-on-linux: command not found
Franks-MacMini:build frank$
-------------------------------

------- probleme ----------
/Users/frank/magiclinux/build/Release/magic-on-linux ; exit;
Franks-MacMini:~ frank$ /Users/frank/magiclinux/build/Release/magic-on-linux ; exit;
Invalid rootfs path: "/Users/frank/Documents/MAGIC_C"
There were syntax errors in configuration file
sh: /Users/frank/Documents/MAGIC_C/LANG/LOCALISE.SH: No such file or directory
Localisation change failed
logout

Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.
Deleting expired sessions...none found.

[Prozess beendet]
-------------------------

AndreasKromke:

--- Zitat von: Lukas Frank am So 19.04.2026, 11:22:46 ---Wieso gibt es das nicht als fertiges Paket ...?

--- Ende Zitat ---
Gute Frage.

Gute Antwort:

Ich habe meinen letzten Mac aus technischen, finanziellen, ökologischen, klimaschutztechnischen und politischen Gründen vor ein paar Jahren in den Ruhestand versetzt. Aus den gleichen Gründen verwende ich seitdem zuhause Linux. Dazu kommt, daß ich im Beruf ebenfalls Linux verwende. Daß der Emulator überhaupt mit relativ wenigen Änderungen auch unter macOS läuft, dafür darfst Du Dich bei Deinen Mitstreitern im Forum  bedanken.

Das Glas ist ist also nicht halbleer, sondern zu 99%  voll. Wenn Du Lust hast, kannst Du gern das "application package" irgendwo zur Verfügung stellen, z.B. auf gitlab oder -hub. Du solltest dann aber ab und zu eine neue Version bauen, wenn sich etwas Wichtiges geändert hat. Und Du müßtest testen und dokumentieren, auf welchen Macs mit welchem Prozessor Dein gebautes binary läuft.

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln