Ceci est une ancienne révision du document !


QElectroTech sous MacOSX

Hombrew arm64 Apple silicon environments MAC Mini M2

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

brew install qt@5

brew untap kde-mac/kde 2> /dev/null
brew tap kde-mac/kde https://invent.kde.org/packaging/homebrew-kde.git --force-auto-update
"$(brew --repo kde-mac/kde)/tools/do-caveats.sh"
brew install kde-mac/kde/kf5-kwidgetsaddons
brew install kde-mac/kde/kf5-kcoreaddons

Copy your libs KF5 *.pri to your Qt brew install like:

cp /opt/homebrew/Cellar/kf5-kcoreaddons/5.102.0/mkspecs/modules/qt_KCoreAddons.pri  /opt/homebrew/Cellar/qt@5/5.15.8_1/mkspecs/modules/
cp /opt/homebrew/Cellar/kf5-kwidgetsaddons/5.102.0/include/KF5/KWidgetsAddons/qt_KWidgetsAddons.pri /opt/homebrew/Cellar/qt@5/5.15.8_1/mkspecs/modules/

cat /opt/homebrew/Cellar/qt@5/5.15.8_1/mkspecs/modules/qt_KCoreAddons.pri

QT.KCoreAddons.VERSION = 5.102.0
QT.KCoreAddons.MAJOR_VERSION = 5
QT.KCoreAddons.MINOR_VERSION = 102
QT.KCoreAddons.PATCH_VERSION = 0
QT.KCoreAddons.name = KF5CoreAddons
QT.KCoreAddons.module = KF5CoreAddons
QT.KCoreAddons.defines = 
QT.KCoreAddons.includes =  /opt/homebrew/Cellar/kf5-kcoreaddons/5.102.0/include/KF5/KCoreAddons
QT.KCoreAddons.private_includes =
QT.KCoreAddons.libs = /opt/homebrew/Cellar/kf5-kcoreaddons/5.102.0/lib
QT.KCoreAddons.depends = core
QT.KCoreAddons.module_config = 

cat /opt/homebrew/Cellar/qt@5/5.15.8_1/mkspecs/modules/qt_KWidgetsAddons.pri

QT.KWidgetsAddons.VERSION = 5.102.0
QT.KWidgetsAddons.MAJOR_VERSION = 5
QT.KWidgetsAddons.MINOR_VERSION = 102
QT.KWidgetsAddons.PATCH_VERSION = 0
QT.KWidgetsAddons.name = KF5WidgetsAddons
QT.KWidgetsAddons.module = KF5WidgetsAddons
QT.KWidgetsAddons.defines = 
QT.KWidgetsAddons.includes =  /opt/homebrew/Cellar/kf5-kwidgetsaddons/5.102.0/include/KF5/KWidgetsAddons
QT.KWidgetsAddons.private_includes =
QT.KWidgetsAddons.libs = /opt/homebrew/Cellar/kf5-kwidgetsaddons/5.102.0/lib
QT.KWidgetsAddons.depends = widgets
QT.KWidgetsAddons.module_config = 
 % cat .zshrc        
export PATH="/opt/homebrew/opt/qt@5/bin:$PATH"
export LDFLAGS="-L/opt/homebrew/opt/qt@5/lib"
export CPPFLAGS="-I/opt/homebrew/opt/qt@5/include"

MacOS Macports environment (new 2023)

We use now Digikam scripts, for create Qt 5.15.X compile environment with qt5-sqlite-plugin (Sqilte3) for database project exporting.
See: https://invent.kde.org/graphics/digikam/-/tree/master/project/bundles/macports
First read the README file:
https://invent.kde.org/graphics/digikam/-/blob/master/project/bundles/macports/README

We only use 01-build-macports.sh and 02-build-extralibs.sh script to build MacOS Macports environment for QET builds.

git clone https://invent.kde.org/graphics/digikam.git
cd digikam/project/bundles/macports/

You can comment some packages which are not useful for QElectroTech
like qt5-qtwebengine, qt5-qtwebkit, etc.

bash ./01-build-macports.sh

If ok then

you can comment some packages which are not useful for QElectroTech,
but keep ext_kcoreaddons and ext_kwidgetsaddons!

bash ./02-build-extralibs.sh 

Add in your .bash_profile or in zsh profile see

# Setting PATH for Qt5.15.x
PATH="/opt/digikam.org.x86_64/libexec/qt5/bin:${PATH}"
PATH="/opt/digikam.org.x86_64/bin:${PATH}"
export PATH=/opt/digikam.org.x86_64/libexec:$PATH
export PATH=/opt/digikam.org.x86_64/include:$PATH

Note : On APPLE M1/2 chips replace in PATH /opt/digikam.org.x86_64 by /opt/digikam.org.arm64

Get GIT sources

git clone git://git.tuxfamily.org/gitroot/qet/qet.git qet_git

Build bundle: We need to add lang1 in qet_git directory with these unzipped files
And create a MAC_OS_X directory in your home otherwise bundles builds was located in /build-aux/mac-osx/ folder.

bash qet_git/misc/MacQetDeploy.sh 

MacOS Homebrew environment (old)

* Note : we can't use Qt 5 sqlite3 plug-in without compile Qt 5
https://invent.kde.org/packaging/homebrew-kde

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

brew install qt@5

brew untap kde-mac/kde 2> /dev/null
brew tap kde-mac/kde https://invent.kde.org/packaging/homebrew-kde.git --force-auto-update
"$(brew --repo kde-mac/kde)/tools/do-caveats.sh"


brew install kde-mac/kde/kf5-kwidgetsaddons
brew install kde-mac/kde/kf5-kcoreaddons


Copy your libs KF5 *.pri  on /usr/local/opt/qt5/mkspecs/modules/  like :

cp /usr/local/opt/kf5-kwidgetsaddons/mkspecs/modules/qt_KWidgetsAddons.pri  /usr/local/opt/qt5/mkspecs/modules/
cp /usr/local/opt/kf5-kcoreaddons/mkspecs/modules/qt_KCoreAddons.pri /usr/local/opt/qt5/mkspecs/modules/

Edit KF5 .pri file $$PWD/…/ PATH like this

QT.KCoreAddons.VERSION = 5.99.0
QT.KCoreAddons.MAJOR_VERSION = 5
QT.KCoreAddons.MINOR_VERSION = 99
QT.KCoreAddons.PATCH_VERSION = 0
QT.KCoreAddons.name = KF5CoreAddons
QT.KCoreAddons.module = KF5CoreAddons
QT.KCoreAddons.defines = 
QT.KCoreAddons.includes =  $$PWD/../../include/KF5/KCoreAddons
QT.KCoreAddons.private_includes =
QT.KCoreAddons.libs = $$PWD/../../lib
QT.KCoreAddons.depends = core
QT.KCoreAddons.module_config = 

to

QT.KCoreAddons.VERSION = 5.99.0
QT.KCoreAddons.MAJOR_VERSION = 5
QT.KCoreAddons.MINOR_VERSION = 99
QT.KCoreAddons.PATCH_VERSION = 0
QT.KCoreAddons.name = KF5CoreAddons
QT.KCoreAddons.module = KF5CoreAddons
QT.KCoreAddons.defines = 
QT.KCoreAddons.includes =  /usr/local/opt/kf5-kcoreaddons/include/KF5/KCoreAddons
QT.KCoreAddons.private_includes =
QT.KCoreAddons.libs = /usr/local/opt/kf5-kcoreaddons/lib
QT.KCoreAddons.depends = core
QT.KCoreAddons.module_config = 

Same things for qt_KWidgetsAddons.pri

cat .bash_profile 
# Setting PATH for Qt5.15.7
PATH="/usr/local/Cellar/qt@5/5.15.7/bin:${PATH}"
export PATH=/usr/local/lib:$PATH
export PATH
git clone git://git.tuxfamily.org/gitroot/qet/qet.git qet_git
bash qet_git/misc/MacQetDeploy.sh 

Or

cd qet_git/
qmake -spec macx-clang
make -j24

Old Documentation

Cette page regroupe l'ensemble des connaissances de l'équipe sur la compilation et l'exécution de QElectroTech sous MacOS X. Le développeur ne disposant pas d'un ordinateur Apple, nous ne garantissons strictement rien quant au bon fonctionnement de QElectroTech sous MacOS X.

Testé sous El Capitan (10.11).

Préparation de l'environnement

Compiler un programme C++ : XCode

Pour disposer d'un compilateur C++ et de l'outil make, vous devez installer Xcode (lancer l'application au moins une fois pour terminer l'installation).

Vérifications :

# Ouvrir une console ; l'utilitaire make doit être présent :
NomDeLaMachine:~ votre_user$ make
make: *** No targets specified and no makefile found.  Stop.

Compiler un programme C++/Qt : Qt 5.x

Téléchargez et installez Qt pour MacOS :

  • Se rendre sur Qt project
  • Répondre aux questions :
    1. Is your application or device being developed for : Open source distribution under a LGPL or GPL licence
    2. Are you prepared to make your application source code publicly available : Yes
    3. Are you able to comply with the obligations of the LGPL (or GPL) and/or does your corporation allow open source usage ? Yes
    4. Get Started
    5. Download now (Le QT Online installer for OS X)
  • Télécharger et installer le sdk de Qt5.x

PS : Si vous avez ce message d'erreur :

Aller dans /Préférences système /Sécurité et confidentialité/ Général.

Et sélectionner « N’importe où » :

sudo spctl --master-disable

__ Indiquer les variables d’environnement Qt au bash :

  1. Afficher les fichiers cachés
 defaults write com.apple.finder AppleShowAllFiles TRUE
  1. Ouvrir le fichier : /Users/Yoann/.bash_profile
  2. rajouter (en adaptant le numéro de version) :
# Setting PATH for Qt5.5
PATH="/Users/Yoann/Qt/5.5/clang_64/bin:${PATH}"
export PATH

Vérifications dans la console du Terminal :

# les variables d'environnements sont présentes :
NomDeLaMachine:~ votre_user$ echo $PATH

On doit retrouver quelque chose avec : /Users/Yoann/Qt/5.5/clang_64/bin

# L'utilitaire qmake doit être présent :
NomDeLaMachine:~ votre_user$ which qmake
/Users/Yoann/Qt/5.5/clang_64/bin/qmake
# Vérification macdeployqt doit être présent :
NomDeLaMachine:~ votre_user$ which macdeployqt
/Users/Yoann/Qt/5.5/clang_64/bin/macdeployqt

Installer Homebrew + coreutils pour étendre les fonctions de cp <code> /usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)” brew install coreutils </code>

Télécharger les sources : Subversion

Pour télécharger et mettre à jour les sources de QElectroTech, vous aurez besoin de Subversion qui a été installé en même temps Xcode.

Vérifications :

# Ouvrez une console
NomDeLaMachine:~ votre_user$ which svn
/usr/local/bin/svn
NomDeLaMachine:~ votre_user$ svn --version
svn, version 1.4.4 (r25188)
compiled Jun 23 2007, 08:53:30

Ouvrer le terminal, taper la commande

svn checkout svn://svn.tuxfamily.org/svnroot/qet/qet/trunk/ Qet-svn/ 

Appuyer sur la touche « entrer » de votre clavier et patienter …

Faire un package avec l'application

Ouvrir le terminal, taper la commande, « bash » plus un espace, et glisser le fichier « MacQetDeploy.sh » se trouvant dans le dossier /Qet-svn/misc/. Appuyer sur la touche « entrer » de votre clavier et patienter …

Vérifier qu'il n’y a pas d’erreur :

Si les erreurs suivantes se produisent, ignorer les, elles correspondent aux bibliothèques mysql et PostgreSQL qui ne sont pas utilisées :

ERROR: no file at "/opt/local/lib/mysql55/mysql/libmysqlclient.18.dylib"
ERROR: no file at "/usr/local/lib/libpq.5.dylib"

Le script vient de télécharger la dernière mise à jour des sources, les compiler, et placer l’application dans un fichier .dmg près à être distribué. L’image disque a comme nom, qelectrotech_ suivi du numéro de version puis du numéro de révision. Elle se trouve dans : /packaging/mac-osx/

Un lien vers la documentation, un dossier d'exemples, et un raccourci du dossier Applications sont également inclus dans l’image disque.

Problèmes connus, remarques, doléances

le fichier info.plist est incomplet à ce jour donc : * pas d’icon sur les sauvegardes de projet (fichier.qet), * pas de possibilité de lancer l’application en cliquant sur une sauvegarde (fichier.qet), ni sur un element (fichier.elmt) ou un cartouche (fichier.titleblock) comme sur les autres OS Linux et MS Windows.

Voir → info.plist info.plist

Application Bundles.

Document-Based App Programming Guide for Mac

CFBundleDocumentTypes

Info.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDocumentTypes</key>
	<array>
		<dict>
			<key>CFBundleTypeIconFile</key>
			<string>elmt</string>
			<key>CFBundleTypeExtensions</key>
			<array>
				<string>elmt</string>
			</array>
			<key>CFBundleTypeRole</key>
			<string>Editor</string>
		</dict>
		<dict>
			<key>CFBundleTypeIconFile</key>
			<string>titleblock</string>
			<key>CFBundleTypeExtensions</key>
			<array>
				<string>titleblock</string>
			</array>
			<key>CFBundleTypeRole</key>
			<string>Editor</string>
		</dict>
		<dict>
			<key>CFBundleTypeIconFile</key>
			<string>qet</string>
			<key>CFBundleTypeExtensions</key>
			<array>
				<string>qet</string>
			</array>
			<key>CFBundleTypeRole</key>
			<string>Editor</string>
		</dict>
	</array>
	<key>CFBundleExecutable</key>
	<string>qelectrotech</string>
	<key>CFBundleIconFile</key>
	<string>qelectrotech.icns</string>
	<key>CFBundleIdentifier</key>
	<string>org.qelectrotech</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundlePackageType</key>
	<string>APPL</string>
	<key>CFBundleSignature</key>
	<string>????</string>
	<key>NOTE</key>
	<string>This file was generated by Qt/QMake.</string>
	<key>CFBundleShortVersionString</key>
	<string></string>
	<key>NSHighResolutionCapable</key>
	<string>YES</string>
	<key>NSHighResolutionMagnifyAllowed</key>
	<string>NO</string>
	<key>NSHumanReadableCopyright</key>
	<string>GNU Public License, Version 2, June 1991</string>
	<key>NSPrincipalClass</key>
	<string>NSApplication</string>
</dict>
</plist>
defaults write com.apple.LaunchServices LSHandlers -array-add "<dict><key>LSHandlerContentTag</key> <string>qet</string><key>LSHandlerContentTagClass</key> <string>public.filename-extension</string><key>LSHandlerRoleAll</key> <string>com.qelectrotech</string></dict>"
defaults write com.apple.LaunchServices LSHandlers -array-add "<dict><key>LSHandlerContentTag</key> <string>elmt</string><key>LSHandlerContentTagClass</key> <string>public.filename-extension</string><key>LSHandlerRoleAll</key> <string>com.qelectrotech</string></dict>"
defaults write com.apple.LaunchServices LSHandlers -array-add "<dict><key>LSHandlerContentTag</key> <string>titleblock</string><key>LSHandlerContentTagClass</key> <string>public.filename-extension</string><key>LSHandlerRoleAll</key> <string>com.qelectrotech</string></dict>"
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -kill -domain local -domain system -domain user
Imprimer/exporter