2011-12-11 13 views
7

Próbuję użyć projektu Xcode wygenerowanego przez CMake. Wszystko wygląda dobrze podczas budowania, z tym wyjątkiem, że Xcode nie może znaleźć plików binarnych, które są zbudowane. Poniżej zrzut ekranu zrobiony po pomyślnym zbudowaniu produktu. Widzę je w katalogu źródłowym projektu. Zauważ jednak, że Xcode pokazuje RED "HelloWorld", co oznacza, że ​​nie może znaleźć produktów.Projekt Xcode wygenerowany przez CMake nie znalazł binarnego "Produkty" zbudowanego z Xcode

Screenshot of Products not available showing Red

konfiguracje CWprowadä 2.8.6 z Xcode 4.2 Lion 10.7.2

Jest CMakeLists.txt

project(HelloWorld) 

add_executable(${PROJECT_NAME} HelloWorld.cpp) 

to kod źródłowy HelloWorld.cpp

#include <iostream> 

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

    return 0; 
} 

Próbowałem utworzyć surowy projekt bezpośrednio z Xcode, po kompilacjach produkty wyświetlają czarny zamiast czerwonej czcionki, co oznacza, że ​​Xcode znalazł produkty. Więc jestem pewien, że jest to związane z projektem CMake Generated Xcode.

Ktoś ma jakiś pomysł? jak to naprawić?

+0

jest twój cel tutaj jedynie zatrzymać Xcode z renderowania nazwę produktu na czerwono, lub są są też inne problemy? Czy Xcode nie jest w stanie znaleźć pliku binarnego, na przykład, gdy uruchomisz go w debugerze? – sjs

+0

To jest problem, którego doświadczam. Xcode nie jest w stanie zbudować produktu, jeśli projekt Xcode jest generowany przez CMake. –

+0

Aby odpowiedzieć na twoje drugie pytanie, tak. plik binarny jest zbudowany i widzę go w katalogu źródłowym. Ale Xcode nie jest w stanie go wykonać. –

Odpowiedz

1

Plik projektu Xcode (co chyba w twoim przypadku będzie nazwany coś HelloWorld.xcproject/project.pbxproject będą miały definicje SYMROOT dla każdej konfiguracji kompilacji na cel.
Można albo zmienić wszystkie definicje SYMROOT do tej samej wartości lub usunąć wszystkie te (Xcode będzie domyślnie „budować”).
projektu, jeśli otwarte, powinny autoreload. Wybierz ALL_BUILD lub HelloWord, czyste i budować.

Nie wiem, czy to jest problem ze sposobu CUpewnij dodaje SYMROOT.
Uwaga: Wiem, że to tylko sugeruje, na czym polega problem, a nie rozwiązanie, ale nie wolno mi jeszcze dodawać komentarzy :)

1

Miałem ten sam problem. Dla mnie było to spowodowane dodatkowym katalogiem "kompilacji" w ścieżce wyszukiwania, którą Xcode użył do znalezienia produktu. I hacked wokół problemu poprzez umieszczenie produktów w miejscu Xcode oczekuje, czyli dodałem dodatkowy „budować” katalog .:

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() 
Powiązane problemy