2016-05-26 2 views
0

Die Werke nach, wenn ich von der Kommandozeile ausgeführt werden, und das erzeugte Xcode-Projekt hat die Architektur auf, was ich hier übergeben:Einstellung Cmake var auf der Kommandozeile vs in CMakeLists

cmake ../src/ -GXcode -DCMAKE_OSX_ARCHITECTURES="armv7 arm64"

Ich dachte, ich würde stattdessen diese Informationen in CMakeLists setzen wie so:

set (CMAKE_OSX_ARCHITECTURES "armv7 arm64")

ich habe versucht, dies um zu verschiedenen Orten in den CMakeLists bewegen, aber es macht keinen Unterschied, und die archi Tecture wird nicht wie in der Befehlszeile festgelegt.

Warum funktioniert die Befehlszeile, aber die explizite Einstellung in der Datei funktioniert nicht?

Antwort

1

Dokumentation für CMAKE_OSX_ARCHITECTURES ausdrücklich sagt:

Der Wert dieser Variablen sollte vor dem ersten Projekt() oder enable_language() Befehlsaufruf gesetzt werden, weil es Konfiguration der Werkzeugkette beeinflussen kann und Flaggen. Es soll vom Benutzer lokal festgelegt werden, indem ein Buildbaum erstellt wird.

Soweit ich verstehe, Toolchain-Datei ausgeführt wird, noch vor dem ersten Befehl in CMakeLists.txt. Wenn diese Datei die Variable überprüft, haben Sie keine andere Wahl als die Variable über die Befehlszeile zu setzen. Ein gewisser Generator-abhängiger Code wird auch von Anfang an ausgeführt.

+0

Seltsamerweise funktionierte es nur, nachdem ich die Anweisung zu * nach * meinem Projekt() verschoben habe. Ich verwende keine Toolchain-Datei. Seltsam, was für mich erfolgreich war, ist das Gegenteil von den Dokumenten, die du zitierst. – johnbakers

+0

Wirklich seltsam. Sieht so aus, als ob der Compiler-Erkennungscode, der unter 'project()'/'enable_language()' aufgerufen wird, diese Variable modifiziert. Es wäre interessant, diese Variable vor 'project()' zu setzen und danach (mit 'message()') auszugeben. – Tsyvarev

+0

ich setze es, dann rufe das Projekt auf, dann habe diese Zeile: 'message (STATUS" archs ist "$ {CMAKE_OSX_ARCHITECTURES})' und es ist leer, wo es ist, wie ich es vor 'project()' gesetzt habe, so ist es Seltsam für mich, dass mein generiertes xcode-Projekt verschiedene Einstellungen hat, wenn ich es vor 'project' stelle, da es scheint, dass' project' löscht, dass die Einstellung – johnbakers