2016-04-10 4 views
0

Я создал самостоятельную сборку команды при компиляции C файлов в Sublime Text 2 и он работает нормально.Как создать сборку с помощью Sublime Text?

Файл output_c.sublime-build выглядит следующим образом:

{ 
    "cmd": "gcc $file_base_name.c -g -O3 -m32 -std=c99 -fverbose-asm -fno-inline -save-temps -Wall -Werror -o $file_base_name.exe" 
} 

И потом, я использую следующую output_asm.sublime-build команду для того, чтобы создать более читаемый файл сборки:

{ 
    "cmd": "objdump -d -M intel $file_base_name.o > $file_base_name.asm" 
} 

Однако вторая команда (Я имею в виду, второй файл output_asm.sublime-build) выгружает вывод на экран (чуть выше строки состояния на экране Sublime Text) вместо создания файла $file_base_name.asm.

Подключен к вопросу, у меня два вопроса:

  1. Как я могу форматировать команду objdump, так что я могу получить выход сборки записываются в текстовый файл?
  2. Как я могу объединить эти две команды сборки в одном файле output_combined.sublime-build, так что объединенный командный файл сразу создает .exe и файл .asm?

(Система: Windows 10)

ответ

2

ответить вам вопросы:

  1. если вы используете команды оболочки, как > вы должны добавить "shell": true в качестве аргумента (или при использовании ST3 shell_cmd вместо cmd)
  2. Если вы используете cmd в оболочке, вы можете просто объединить две команды с && (выполнить вторую команду, если первая команда была успешной)

Кроме того, я бы рекомендовал добавить область selector, working_dir (особенно при работе с file_base_name) и file_regex (щелкнуть переход к ошибкам). Это приводит к следующей системе сборки:

{ 
    "cmd": "gcc $file_name -g -O3 -m32 -std=c99 -fverbose-asm -fno-inline -save-temps -Wall -Werror -o $file_base_name.exe && objdump -d -M intel $file_base_name.o > $file_base_name.asm", 
    "shell": true, 
    "working_dir": "$file_path", 
    "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", 
    "selector": "source.c" 
} 
+0

Звуков справедливо, но после того, как дать попробовать, он выплевывает следующее сообщение об ошибке: ** 'TypeError: __init __() получил неожиданный аргумент ключевого слова«shell_cmd'' ** (ссылка : http://i.imgur.com/0qENVO9.png) – ssd

Смежные вопросы