2013-09-08 5 views
9

Ho appena aggiornato a Xcode 5 beta con gli strumenti della riga di comando del 15 aprile 2013 e ho ricevuto il seguente avviso durante l'esecuzione di una build cmake durante il tentativo standard di CMakeTestCCompiler.cmake compilare un semplice programma di test:Edificio per MacOSX, ma collegamento a dylib costruito per iOS Simulatore file

cmake -version 
cmake version 2.8.11.2 

ld: building for MacOSX, but linking against dylib built for iOS Simulator file '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk/usr/lib/libSystem.dylib' for architecture i386 

lipo -info /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk/usr/lib/libSystem.dylib 
Non-fat file: libSystem.dylib is architecture: i386 

La fase di compilazione è:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc -arch i386 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk -o /Users/temp/testCCompiler.c.o -c /Users/temp/testCCompiler.c 

lipo -info /Users/temp/testCCompiler.c.o 
Non-fat file: testCCompiler.c.o is architecture: i386 

Il passaggio di collegamento è:

/usr/local/bin/cmake -E cmake_link_script /Users/temp/link.txt --verbose=1 

dove link.txt contiene:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc -arch i386 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk -Wl,-headerpad_max_install_names /Users/temp/testCCompiler.c.o -o testCCompiler 

Sembra che sia testCCompiler.co e libSystem.dylib sono i386, i386 è specificato in link.txt, e i386 è la giusta architettura per il simulatore così i' Non sono sicuro del motivo per cui pensa che stia costruendo per MacOSX. Forse un'opzione di comando è sbagliato :(.

Grazie per qualsiasi aiuto!

+1

scavate nella fonte CMake e il comando di collegamento grezzo presentata da CMake è: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/ Sviluppatore/usr/bin/gcc -arch i386 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk -Wl, -headerpad_max_install_names/Users/temp/testCCompiler. co -o testCCompiler – user1031420

+4

Il problema era che Xcode 5 sostituisce gcc con clang e aggiunge un'opzione "-triple" che specifica OSX come destinazione. Se si passa "-miphoneos-version-min = 7.0" su entrambe le righe di comando di gcc, funziona. Puoi vedere la riga di comando clang se passi "--verbose" a gcc. È inoltre necessario aggiungere PATH per Xcode 5 in modo che cmake possa trovare gli strumenti necessari: export PATH =/Applications/Xcode5-DP6.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin:/Applications /Xcode5-DP6.app/Contents/Developer/usr/bin:$PATH Nessuno di questi è ufficiale .. ma funziona per me finora. – user1031420

+1

Sembra più una risposta che un commento. – rjmunro

risposta

22

Il problema era che Xcode 5 sostituisce gcc con clangore e aggiunge in un'opzione "-triple" che specifica OSX come destinazione. Se si passa "-miphoneos-version-min = 7.0" su entrambe le righe di comando di gcc funziona.Puoi vedere la riga di comando clang se passi "--verbose" a gcc. È inoltre necessario aggiungere al PATH per Xcode 5 in modo che cmake può trovare gli strumenti necessari: export PATH =/Applications/Xcode5-DP6.app/Contents/Developer/Toolchains/XcodeDefault.xct oolchain/usr/bin: /Applications/Xcode5-DP6.app/Contents/Developer/usr/ bin: $ PATH Niente di tutto questo è ufficiale .. ma funziona per me finora

+0

Questo metodo ha avuto successo con Xcode 5.0.2. –

0

run questo commento sul tuo client.app:

export PATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xct‌oolchain/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:$PATH 
Problemi correlati