2011-12-11 15 views
7

Sto tentando di utilizzare il progetto Xcode generato da CMake. Tutto sembra a posto quando si costruisce, tranne per il fatto che Xcode non riesce a trovare i binari costruiti. Di seguito è uno screenshot che ho preso dopo aver creato con successo il prodotto. Posso vederli nella directory dei sorgenti del progetto. Tuttavia, nota che Xcode mostra RED "HelloWorld", il che significa che non riesce a trovare i prodotti.Il progetto Xcode generato da CMake non riesce a trovare i "prodotti" binari creati da Xcode

Screenshot of Products not available showing Red

Configurazioni: CEseguire 2.8.6 con Xcode 4.2 da Lion 10.7.2

Questo è CMakeLists.txt

project(HelloWorld) 

add_executable(${PROJECT_NAME} HelloWorld.cpp) 

Questo è il codice sorgente per HelloWorld.cpp

#include <iostream> 

int main(){ 
    std::cout << "HelloWorld!" << std::endl; 

    return 0; 
} 

Ho provato a creare un progetto raw direttamente da Xcode, dopo la compilazione, i prodotti mostrano caratteri neri anziché rossi, il che significa che Xcode ha trovato i prodotti. Quindi sono sicuro che questo è legato al progetto Xcode generato da CMake.

Qualcuno ha qualche idea? come risolvere questo?

+0

è il vostro obiettivo qui solo per fermare Xcode dal rendere il nome del prodotto in rosso, o sono ci sono anche altri problemi? Xcode non è in grado di trovare il file binario quando lo si esegue nel debugger, ad esempio? – sjs

+0

È un problema che sto vivendo. Xcode non è in grado di creare il prodotto se il progetto Xcode è generato da CMake. –

+0

Per rispondere alla tua seconda domanda, sì. il binario è compilato e posso vederlo nella directory dei sorgenti. Ma Xcode non è in grado di eseguirlo. –

risposta

1

Il file di progetto Xcode (che immagino, nel tuo caso sarebbe chiamato qualcosa come HelloWorld.xcproject/project.pbxproject, avrà definizioni SYMROOT per ciascuna delle configurazioni di build per bersaglio.
è possibile modificare tutte le definizioni SYMROOT allo stesso valore o rimuovere tutti coloro (Xcode sarà di default di "costruire").
progetto, se aperto, dovrebbe autoreload. Selezionare ALL_BUILD o HelloWord, pulito e costruire.

Non so se si tratta di un problema con il modo in cui cMake aggiunge the SYMROOT.
Nota: so che questo accenno solo a quale potrebbe essere il problema e non a una soluzione, ma non è ancora possibile aggiungere commenti :)

1

Ho avuto lo stesso problema. Per me è stato causato da una directory "build" in più nel percorso di ricerca che Xcode stava usando per trovare il prodotto. Ho inciso intorno al problema mettendo i prodotti della posizione Xcode si aspetta, cioè ho aggiunto l'extra directory "costruire" .:

if(CMAKE_GENERATOR STREQUAL Xcode) 
    set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/build/Debug) 
    set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/build/Release) 
    set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/build/Debug) 
    set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/build/Release) 
    set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/build/Debug) 
    set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/build/Release) 
endif() 
Problemi correlati