2011-12-11 34 views
7

我正在嘗試使用CMake生成的Xcode項目。除了Xcode無法找到構建的二進制文件之外,構建時一切都很好。以下是我成功構建產品後的屏幕截圖。我可以在項目源目錄中看到它們。但是請注意,Xcode顯示RED「HelloWorld」,這意味着它無法找到產品。CMake生成的Xcode項目無法找到從Xcode構建的二進制「產品」

Screenshot of Products not available showing Red

配置:CMake的2.8.6和Xcode 4.2獅子10.7.2

這是的CMakeLists.txt

project(HelloWorld) 

add_executable(${PROJECT_NAME} HelloWorld.cpp) 

這是HelloWorld.cpp

的源代碼
#include <iostream> 

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

    return 0; 
} 

我試着直接從Xcode創建一個原始項目,編譯後,產品顯示黑色而不是紅色字體,這意味着Xcode找到了產品。所以我相信這與CMake Generated Xcode項目有關。

任何人有任何想法?如何解決這個問題?

+0

是你的目標僅僅是在這裏從紅色渲染產品名稱停止Xcode中,或者是還有其他問題呢?例如,當Xcode在調試器中執行它時無法找到二進制文件? – sjs

+0

這是我遇到的問題。如果Xcode項目由CMake生成,則Xcode無法構建產品。 –

+0

要回答你的第二個問題,是的。該二進制文件已經生成,我可以在源目錄中看到它。但Xcode無法執行它。 –

回答

1

Xcode項目文件(我猜,你的情況將被命名爲類似HelloWorld.xcproject/project.pbxproject,將有SYMROOT定義對於爲每個目標構建的配置。
您可以更改所有SYMROOT定義爲相同的值或刪除所有這些(Xcode中將默認爲「建」)。
項目,如果開放,應該自動重選擇ALL_BUILD或HELLOWORD,清潔和建設。

不知道這是CMake的添加方式問題SYMROOT。
注:我知道這只是暗示問題可能是什麼,而不是解決方案,但不允許添加評論:)

1

我有同樣的問題。對我而言,它是由Xcode用於查找產品的搜索路徑中的額外「構建」目錄引起的。我解決此問題砍死通過將產品在Xcode期望的位置,也就是我添加了額外的「構建」目錄:

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