Сгенерированный CMake проект XCode не может найти двоичные «продукты», созданные из XCode - PullRequest
6 голосов
/ 12 декабря 2011

Я пытаюсь использовать проект CMake Generated Xcode. При сборке все выглядит хорошо, за исключением того, что Xcode не может найти встроенные двоичные файлы. Ниже приведен скриншот, который я сделал после успешной сборки продукта. Я вижу их в каталоге исходных текстов проекта. Однако обратите внимание, что в Xcode отображается КРАСНЫЙ «HelloWorld», что означает, что он не может найти товары.

Screenshot of Products not available showing Red

Конфигурации: CMake 2.8.6 с Xcode 4.2 на Lion 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.

У кого-нибудь есть идеи? как это исправить?

Ответы [ 2 ]

1 голос
/ 21 декабря 2015

У меня была такая же проблема.Для меня это было вызвано дополнительным каталогом "build" в пути поиска, который Xcode использовал для поиска продукта.Я решил эту проблему, поместив продукты в место, ожидаемое Xcode, т.е. я добавил дополнительный каталог "build" .:

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()
1 голос
/ 14 декабря 2011

Файл проекта xcode (который, я полагаю, в вашем случае будет называться примерно как HelloWorld.xcproject/project.pbxproject) будет иметь определения SYMROOT для каждой конфигурации сборки для цели.Вы можете либо изменить все определения SYMROOT на одно и то же значение, либо удалить все из них (xcode по умолчанию будет "build").Проект, если он открыт, должен автоматически перезагрузиться.Выберите ALL_BUILD или HelloWord, очистите и соберите.

Не уверен, что это проблема с тем, как cmake добавляет SYMROOT.Примечание: я знаю, что это только намеки на то, что проблема может быть, а не решение, но я пока не могу добавлять комментарии:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...