Die Arbeit mit CMake und Xcode: keep-Projekt ändert sich, wenn CMakeLists.txt geändert
Zunächst, ich habe nie entwickelt mit Xcode. Ich habe ein Projekt entwickelt worden, und von mir unter einen bestimmten Umgebung (Linux und emacs), und nun einige Kollegen, die verwenden eine andere Umgebung, die mit mir zusammenarbeiten. Dies ist ein C++ - Projekt verwendet CMake.
Lange Geschichte kurz:
- Ich benutze Linux/emacs. Andere Entwickler mac/Xcode.
- Ich den GNU Makefile-generator. Sie verwenden Xcode-generator.
- Alles schien zu funktionieren ok.
Das problem
Xcode-Entwickler die ausführbare Datei aus, erscheint unter der Ausführbaren Dateien Liste der Gruppe & Dateien - Fenster von Xcode. Sie konfigurieren Sie es durch einen Doppelklick und fügen Sie Ihre tweaks (Konfiguration der debugging-Verzeichnissen, setzen von environment-Variablen, aber wichtiger, Einstellung die Argumente der ausführbaren Datei).
Wenn ein Entwickler (mir) änderungen der CMakeLists.txt
(nämlich hinzufügen, um eine neue source-Datei), die XCode Entwickler sind gezwungen, zu re-generieren Ihr Projekt und Sie verlieren alle der oben genannten Konfiguration.
Frage: gibt es eine Möglichkeit dies zu vermeiden?
Wenn jeder Xcode-Entwickler ständig verliert, die Konfiguration würde ich sicherlich die einzige sein, die mit CMake. 🙁
Vielen Dank für Ihre Hilfe!
- Warum der down-vote ? Scheint wie eine vernünftige Frage an mich.
- In diesen Tagen funktioniert dies einwandfrei. Sie können ein Schema zu konfigurieren Argumente, ändern Sie das Arbeitsverzeichnis, etc., und regeneriert das Projekt über die ALL_BUILD Ziel nicht, verlieren Sie diese änderungen. Auch Entwickler können erstellen Xcode "Arbeitsbereiche", die sich außerhalb der generierte Projekt und ermöglicht eine Menge der Anpassung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, Sie werden verlieren diese. Xcode speichert alle Projekt-Definitionen in einer Datei namens Foo.xcodeproj/project.pbxproj. Wenn ein Mac-Entwickler ändert eine Flagge oder Einstellung, es ist aufgenommen in das Projekt.pbxproj-Datei. Wenn Sie ändern Ihre CMakeLists.txt Datei CMake löst eine Umbau-Projekt.pbxproj, wischte sich alle Mac-developer ' s verpasst. Xcode wurde nicht entwickelt, mit CMake im Geist, und diese zwei arbeiten nur so gut zusammen.
Eine mögliche Lösung (die ist nicht die größte für die Mac-Entwickler) ist die Verwendung von CMake zu generieren makefiles. Sie würde schreiben müssen, ein paar eigene Befehle in Xcode aufrufen, die CMake/Make zum erstellen der ausführbaren Dateien, aber Sie wäre in der Lage, Argumente in CMake zur Steuerung des build-Prozesses. Die ausführbaren Dateien würde separat definiert werden, um Xcode, und CMake wären nur wischen Sie die Makefiles. Dies könnte ein Weg sein, um alle glücklich.
Den CMake-Leute sind nicht gegeben, Xcode die Aufmerksamkeit, die es verdient, IMHO. Aber diese Einschränkung hängt in Xcode Architektur, und das wird eine harte Nuss.
Hoffe, das hilft,
-dan
Edit:
Ihre Xcode-Entwickler haben einige begrenzte Fähigkeit zur Nutzung der "benutzerdefinierten Einstellungen". Ich weiß nicht, wie man diese (ich bin ein emacs/make-Art von Kerl), aber vielleicht könnten Sie diese überschreiben CMake die Einstellungen.
cmake -G Xcode
ist immer noch horrend, nicht-portabel, mit Dutzenden von hart-codierten Pfade statt${CMAKE_SOURCE_DIR}
,env cmake
, und mehr (z.B./usr/local/Cellar/cmake/3.11.2/share/cmake
).Können Sie ein Ziel hinzuzufügen, die das Programm ausführt, von
add_custom_target(foobar COMMAND foo --bar DEPENDS foo)
. Sie können auch ein Skript aufrufen, statt das Programm, wo es einfach ist das setzen von Umgebungsvariablen (ich benutze dieses setup unter Win32 zu optimieren, Wege in VC). Dieses Skript kann auch eine Vorlage, die in der VCS, so hat jeder Entwickler eine eigene version des Skripts, die mit der tatsächlichen command-line-Parameter.