#xcode #macos
#xcode #macos
Вопрос:
Я недавно перешел с Windows на Macbook Pro. Я привыкаю к Xcode. Одна вещь, которая мне бы понравилась, — это запуск приложения отладки в терминале. В настоящее время мне нужно нажать Command R, чтобы оно скомпилировалось и запустилось в Xcode. Чтобы запустить приложение в терминале, я должен выполнить дополнительный шаг, открыв папку Products, щелкните правой кнопкой мыши приложение, затем «Открыть как внешний редактор». Затем терминал открывается и запускает программу.
Я бы хотел, чтобы это поведение работало автоматически, нажав Command R. Мне кажется, что там будет настройка для прямого вывода.
Есть ли какие-либо шаги для достижения этой цели?
Ответ №1:
Сначала создайте новую схему (или отредактируйте текущую) и измените исполняемый файл на Terminal.app:
Затем на вкладке «Аргументы» убедитесь, что для вашего приложения установлено значение «Базовые расширения». Затем поместите open -a ${BUILT_PRODUCTS_DIR}/${FULL_PRODUCT_NAME}
Команда будет расширена до чего-то вроде open -a /Users/Me/Library/Developer/Xcode/DerivedData/MyProj-abcdefghijklmnopqrrstuvwxyz/Build/Products/Debug-iphonesimulator/Universal.app
open -a
это то, как вы открываете приложение из командной строки.
Редактировать: использовать ${BUILT_PRODUCTS_DIR}/${FULL_PRODUCT_NAME}
вместо (см. Комментарии).
Комментарии:
1. Спасибо, хотя он только открывает терминал и, похоже, не выполняет аргумент.
2. Это сработало после изменения аргумента на этот: $ {BUILT_PRODUCTS_DIR} / $ {FULL_PRODUCT_NAME} Спасибо.
3. Как можно передать аргументы этому исполняемому файлу?
4. @Francisco Я полагаю, вы можете просто добавить их в конец команды
open -a ${BUILT_PRODUCTS_DIR}/${FULL_PRODUCT_NAME} ARG1 ARG2
. Проверьтеman open
, но я думаю, что все аргументы, указанные после имени приложения, передаются в качестве аргументов непосредственно в приложение.5. @chown К сожалению, это не так, поскольку Xcode использует open -a.
Ответ №2:
Опираясь на проницательную идею Чауна:
-
Создайте файл AppleScript, содержащий:
on run argv set product to item 1 of argv tell application "Terminal" activate do script product end tell end run
Этот AppleScript открывает Terminal.app и запускает первый аргумент командной строки внутри Terminal.app
В моей конфигурации я сохранил его как
runproduct.scpt
under$HOME/bin
. -
Добавьте новую схему (вы можете дублировать свою текущую схему) или отредактируйте свою текущую схему. На вкладке Info установите для исполняемого
/usr/bin/osascript
файла значение , которое представляет собой программу, выполняющую AppleScripts: -
На вкладке Аргументы добавьте два аргумента: местоположение AppleScript (
${HOME}/bin/runproduct.scpt
) и местоположение целевого исполняемого файла ("${BUILT_PRODUCTS_DIR}/${FULL_PRODUCT_NAME}"
), причем последний является первым аргументом, переданным AppleScript:
Я не уверен, что это можно заставить работать с отладчиком.
Комментарии:
1. Привет, спасибо за все руководства здесь! Могу ли я каким-либо образом сделать это, чтобы заставить его работать с отладчиком? К сожалению, мне нужно отладить приложение ncurses: (
2. Привет, Томас, я знаю, что уже очень поздно, но в интересах других, после установки точек останова в коде и после запуска нажмите Debug-> Attach to Process и выберите процесс, к которому вы хотите подключить LLDB.
Ответ №3:
В Xcode (по крайней мере, в версии 8) есть флажок «Использовать терминал», доступный из Edit Scheme …> Run> Options> Console. С помощью этой опции Xcode запускает system Terminal.app с подключенным вашим двоичным файлом (например, для целей отладки).
Комментарии:
1. Я использую Xcode 9, и область консоли, показанная выше, не отображается на моем экране. Он останавливается при отладке очереди. Есть предложения?
2. @ChuckKrutsinger вы всегда можете установить более старые версии XCode с developer.apple.com/download/more Это неудобно, но в некоторых случаях может помочь. Честно говоря, запуск с терминалом не был идеальным из-за проблем с его запуском иногда (обычно мне приходилось перезапускать терминал после второго запуска, чтобы снова подключиться к нему)