6 Stimmen

CMake generiertes Xcode-Projekt kann das binäre "Products", das aus Xcode erstellt wurde, nicht finden

Ich versuche, ein mit CMake generiertes Xcode-Projekt zu verwenden. Alles sieht gut aus beim Bauen, außer dass Xcode die erstellten Binärdateien nicht finden kann. Unten ist ein Screenshot, den ich nach erfolgreichem Erstellen des Produkts gemacht habe. Ich kann sie im Projektquellverzeichnis sehen. Beachten Sie jedoch, dass Xcode das ROT "HelloWorld" anzeigt, was bedeutet, dass es die Produkte nicht finden kann.

Screenshot der nicht verfügbaren Produkte in Rot anzeigen

Konfigurationen: CMake 2.8.6 mit Xcode 4.2 auf Lion 10.7.2

Dies ist CMakeLists.txt

project(HelloWorld)

add_executable(${PROJECT_NAME} HelloWorld.cpp)

Dies ist der Quellcode für HelloWorld.cpp

#include 

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

    return 0;
}

Ich habe versucht, direkt von Xcode aus ein Rohprojekt zu erstellen. Nach dem Kompilieren werden die Produkte mit schwarzer Schrift angezeigt anstatt mit roter Schrift, was bedeutet, dass Xcode die Produkte gefunden hat. Daher bin ich sicher, dass dies mit dem von CMake generierten Xcode-Projekt zusammenhängt.

Hat jemand eine Idee, wie man das beheben kann?

1voto

Vishal Punkte 636

Die xcode-Projektdatei (die ich vermute, in Ihrem Fall würde etwas wie HelloWorld.xcproject/project.pbxproject heißen) enthält SYMROOT-Definitionen für jede der Build-Konfigurationen pro Ziel.
Sie können entweder alle SYMROOT-Definitionen auf denselben Wert ändern oder alle entfernen (Xcode wird auf "build" zurückgesetzt).
Das Projekt sollte, wenn es geöffnet ist, automatisch neu laden. Wählen Sie ALL_BUILD oder HelloWord, bereinigen Sie und erstellen Sie.

Nicht sicher, ob es ein Problem mit der Art und Weise ist, wie CMake das SYMROOT hinzufügt.
Hinweis: Ich weiß, dass dies nur auf das Problem hinweist und keine Lösung darstellt, aber ich darf noch keine Kommentare hinzufügen :)

1voto

jsj Punkte 8569

Ich hatte das gleiche Problem. Bei mir wurde dies durch ein zusätzliches "build"-Verzeichnis im Suchpfad verursacht, den Xcode verwendet hat, um das Produkt zu finden. Ich habe das Problem umgangen, indem ich die Produkte an den Ort platziert habe, den Xcode erwartet, d.h. ich habe das zusätzliche "build"-Verzeichnis hinzugefügt.:

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()

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X