osx mavericks - Qt5 Condicionales de destino no encontrados
osx-mavericks (12)
Acabo de actualizar a la última versión de las herramientas de línea de comandos en OS X Mavericks y ahora al compilar mi código (que funcionaba anteriormente) arroja el siguiente error
> clang: warning: no such sysroot directory:
> ''/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk''
> In file included from ../QtOpenGL/Main.cpp:1: In file included from
> ../../Qt/5.3/clang_64/lib/QtWidgets.framework/Versions/5/Headers/QApplication:1:
> In file included from
> ../../Qt/5.3/clang_64/lib/QtWidgets.framework/Versions/5/Headers/qapplication.h:45:
> In file included from
> /Users/BB/Qt/5.3/clang_64/lib/QtCore.framework/Headers/qcoreapplication.h:45:
> In file included from
> /Users/BB/Qt/5.3/clang_64/lib/QtCore.framework/Headers/qglobal.h:76:
> /Users/BB/Qt/5.3/clang_64/lib/QtCore.framework/Headers/qsystemdetection.h:196:12:
> fatal error: ''TargetConditionals.h'' file not found
> # include <TargetConditionals.h>
> ^ 1 error generated. make: *** [Main.o] Error 1 20:29:52: Le processus "/usr/bin/make" s''est terminé avec le code 2. Erreur lors
> de la compilation/déploiement du projet QtOpenGL (kit : Desktop Qt
> 5.3.0 clang 64bit) When executing step "Make"
¿Alguien sabe que si cambia esta línea
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk
de sdk 8 a 9 funcionaría? Si es así, ¿dónde en los parámetros de Qt5 puedo cambiar esto?
Acabo de actualizar a XCode 9 y comencé a tener este problema en macOS Sierra (10.12). El problema es que Xcode movió el enlace simbólico predeterminado a 10.13. Arreglar:
cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs
sudo ln -s MacOSX.sdk MacOSX10.12.sdk
Descubrí que el archivo ".qmake.cache" en mi raíz del proyecto tenía una referencia a Mac OS 10.8. La solución fue eliminar el archivo y crear el proyecto desde cero.
Es posible compilar el proyecto también agregando la siguiente línea al archivo .pro
QMAKE_MAC_SDK = macosx10.9
Estoy usando Qt5.8 en macosx10.13, resolví este problema editando el archivo /usr/local/Cellar/qt-legacy-formula/5.8.0_1/mkspecs/qdevice.pri agregando esta línea:
!host_build:QMAKE_MAC_SDK = macosx10.13
Instalé Qt 5.9.1 antes de instalar Xcode 10.13. Desde que actualicé el Xcode, el mensaje de error con la siguiente advertencia comenzó a aparecer.
:-1: warning: no such sysroot directory: ''/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk'' [-Wmissing-sysroot]
Resolví el problema cambiando la siguiente línea
QMAKE_MAC_SDK = macosx
a
QMAKE_MAC_SDK = macosx10.13
en el siguiente archivo:
path_where_I_installed_qt/Qt/5.9.1/clang_64/mkspecs/qdevice.pri
Espero que te sirva
Para Qt 5.8 y iOS build agregué un enlace simbólico a sdk en las carpetas de XCode:
cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs
ln -s iPhoneOS.sdk iPhoneOS10.0.sdk
cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs
ln -s iPhoneSimulator.sdk/ iPhoneSimulator10.2.sdk
Para mí, eliminar el contenido del directorio de salida solucionó el problema de forma manual (Qt 5.9, Xcode9, MacOS 10.12.6). Limpieza / Reconstrucción dejó algunas cosas corruptas.
Para referencia de otras personas, resolví el problema editando mi archivo mkspec de plataforma:
/users/nic/Qt/5.3/clang_64/mkspecs/qdevice.pri
cambiar la siguiente línea:
!host_build:QMAKE_MAC_SDK = macosx10.8
a esto:
!host_build:QMAKE_MAC_SDK = macosx10.9
Asegúrese de limpiar su proyecto y ejecutar qmake nuevamente.
Nic.
Si compila en otras plataformas además de OS X, una mejora de la solución BRabbit27 sería:
macx {
QMAKE_MAC_SDK = macosx10.9
}
Solo quería comentar sobre esto agregando mi experiencia. ¡Recientemente actualicé a High Sierra, XCode 9.2 y Qt5.10 y el mensaje de licencia de XCode me estaba volviendo loco!
En qdevice.pri cambié
QMAKE_MAC_SDK = macosx
a
QMAKE_MAC_SDK = macosz10.13
pero eso no era todo lo que necesitaba. Tuve que eliminar los archivos .qmake.stash y Makefile del directorio de compilación. No estoy seguro de que se necesite eliminar el Makefile, pero lo hice de todos modos. Luego eliminé los archivos * .pro.user para poder forzar una reconfiguración por QtCreator. Eso me forzó o me permitió seleccionar la versión actualizada de Qt. Antes de esto, creo que estaba tratando de usar las versiones anteriores de las cosas. Entonces, limpiar todas las referencias a las cosas viejas en su proyecto y seleccionar lo nuevo es importante.
Tuvo el mismo problema en Qt 5.5, MacOS 10.10.4. Eliminé .qmake.conf y .qmake.stash del directorio del proyecto.
Método 1
Este tipo de error aparecerá cada vez que actualice Xcode
para que pueda eliminar el archivo de caché en qt antes de compilar o simplemente eliminar cuando obtiene el error
rm {your target build folder}/.qmake.stash
o
rm {your project folder}/.qmake.stash
si no sabes dónde encontrar .qmake.stash
, prueba
find ~ -name .qmake.stash
Método 2
No se recomienda porque puede obtener un error de compilación cuando utiliza la aplicación Xcdoe
iphoneOS
cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/
sudo ln -s iPhoneOS.sdk iPhoneOS{version}.sdk
iPhoneSimulator
cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/
sudo ln -s iPhoneSimulator.sdk iPhoneSimulator{version}.sdk