Russian Qt Forum
Ноябрь 22, 2024, 01:59 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Xcode shell script  (Прочитано 10000 раз)
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« : Октябрь 31, 2018, 23:30 »

В тред призывается Igors. Я вообще ни бум-бум в этом вашем Xcode, но. Я пытаюсь оживить труп и заюзать генератор qbs для Xcode.
Вкратце - он генерит проект, в котором в качестве правила сборки указан shell-скрипт, запускающий qbs.
И вроде бы оно должно работать, но я получаю странную ошибку:

Код:
Showing Recent Messages
:-1: shell script build rule for '/Users/abbapoh/Programming/qt5/alien/qbs/tests/auto/blackbox/testdata-xcodegen/simple-app/main.cpp' must declare at least one output file (in target 'simple-app')

Быстрый гуглеж выдает, что ошибка начинается с Xcode 10 (угадайте мою версию по фотографии).

Так вот, о чем то бишь я. Чо ему надо-то? Ну добавил я что-то в поле Output Files, он всё равно ругается. Может, есть тут гуру Xcode, кто делал там кастомные шаги?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Ноябрь 01, 2018, 06:05 »

Ну кастомные шаги все делают (надо хотя бы залить либы в bundle), но конкретно помочь нечем, т.к. все тяну с обновлением и еще на Xcode 4.6 (пригрелся). Input/Output files роялят только если скрипт ссылается на них, напр "$SCRIPT_INPUT_FILE_0", явно не то. О каких-то "правилах сборки" мне ничего не известно. Есть "Build Phase" - один из шагов билда, если там указаны скрипты - они запускаются. Как получилось что скрипт натравлен на cpp файл (выглядит бессмысленно) - хз
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #2 : Ноябрь 01, 2018, 10:25 »

Как получилось что скрипт натравлен на cpp файл (выглядит бессмысленно) - хз

Так в том-то и дело что я не понимаю как он связан с cpp файлом.

Пора делать богомерзкие скриншоты.
https://www.dropbox.com/s/d4ztqpsa31vpes2/xcode1.png?dl=0
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #3 : Ноябрь 01, 2018, 11:15 »

что, если перетащить кастомный шаг над compile sources?

добавил фейковый скрипт в тестовый проект — нет ошибок. Есть шаги как воспроизвести?

может вообще лучше использовать тот же подход, что и qmake при генерации проекта Xcode? Он там делает 2 таргета, из которых первый выполняет препроцессинг, а второй уже собирает; оба используют make-файлы под капотом.
« Последнее редактирование: Ноябрь 01, 2018, 11:27 от kambala » Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #4 : Ноябрь 01, 2018, 13:38 »

что, если перетащить кастомный шаг над compile sources?
Да, разумно, сначала исходник создать, потом компилить
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #5 : Ноябрь 01, 2018, 15:59 »

А чо, их можно перетаскивать?? Буду дома, попробую.

Да, у меня была идея сгенерить кумейком проект и посмотреть что он делает.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #6 : Ноябрь 01, 2018, 16:06 »

А чо, их можно перетаскивать?? Буду дома, попробую.
ага, не слишком это интуитивно... Улыбающийся И даже переименовывать можно)

если не выйдет ничего, выложи полный проект, посмотрим.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #7 : Ноябрь 01, 2018, 16:42 »

А чо, их можно перетаскивать??
Если и нельзя, то вставить новую "Build Phase" и скопировать точно можно
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #8 : Ноябрь 01, 2018, 21:00 »

И правда можно перетаскивать. Правда не помогает.

Вот проект, в папке build сгенеренный проект Xcode. Вряд ли он соберется, но если qbs хотя бы попытается запустится, уже прогресс будет. https://www.dropbox.com/s/6ehfphs81ama32z/simple-app.zip?dl=0
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #9 : Ноябрь 02, 2018, 02:13 »

завелось Улыбающийся

для начала скажу, что проект был сгенерирован с абсолютными путями (некруто), поэтому пришлось их заменить в файле build/simple-app.xcodeproj/project.pbxproj

проблема оказалась в том, что qbs генерирует еще и Build Rules, и ошибка указывала именно на них. После добавления фейкового выходного файла исходная ошибка пропала (в Xcode 9 ее действительно не было вообще), см. скриншот.

далее, файл build/simple-app.xcodeproj/project.xcworkspace/xcuserdata/qbs.xcconfig также содержал абсолютный путь, его я заменил на "$PROJECT_FILE_PATH/project.xcworkspace/xcuserdata/${USER}.xcuserdatad/qbs" (подсмотрел в build/simple-app.xcodeproj/project.xcworkspace/xcshareddata/qbs, хотя туда можно вписывать любой путь, ведь папка xcuserdata не должна попадать под контроль версий), а сам файл сделал симлинком на креаторовский qbs. (*)

теперь полезла новая ошибка Улыбающийся
Цитировать
/Users/kambala/Development/simple-app/build/simple-app.xcodeproj/project.xcworkspace/xcuserdata/kambala.xcuserdatad/qbs: line 1: \317\372\355\376: command not found
которая была устранена в файле build/simple-app.xcodeproj/project.xcworkspace/xcshareddata/qbs с помощью удаления точки из 4-й строки (было почему-то ". $userscript")

после этого начало работать, рабочий исполняемый файл появлялся, но в конце выдавало ошибку
Цитировать
'"/Users/kambala/Development/simple-app/build/simple-app.xcodeproj/project.xcworkspace/xcshareddata/qbs"' not found or is not executable
Command /bin/sh failed with exit code 1
хотя файл там вполне определенно был. Полчаса соображал что не так, пока не дошло, что не надо было заключать путь в кавычки в (*) Улыбающийся
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #10 : Ноябрь 02, 2018, 10:10 »

О, спасибо! Я думал про билд рулы, но то ли поиск глючит (не находил cpp и с) то ли я криворукий потому я и решил что там нет ничего. Теперь знаю, что править.

Насчет путей - а если юзать относительные, то относительно чего надо указывать путь к qbs? Действительно, может быть удобно добавить сгенеренный проект к контролю версий, но я пока не придумал, как.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #11 : Ноябрь 02, 2018, 11:10 »

поиск глючит (не находил cpp и с)
this
Насчет путей - а если юзать относительные, то относительно чего надо указывать путь к qbs? Действительно, может быть удобно добавить сгенеренный проект к контролю версий, но я пока не придумал, как.
relative to project, например. если же не предполагается, что бинарник будет под СКВ, то чтоб он лежал в каком-то стандартном месте (например, /Applications/Qt/Qt Creator.app/Contents/MacOS/qbs).
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.052 секунд. Запросов: 22.