Я пишу код на C ++ при поддержке научных библиотек GNU. Я правильно установил их, и для того, чтобы скомпилировать их из терминала, мне просто нужно написать следующее:
g++ $(gsl-config --cflags) filename.cpp $(gsl-config --libs)
Теперь я пользователь TextMate, и я хотел бы изменить стандартную команду Run из пакета C, чтобы скомпилировать мои cpp-файлы с правильными параметрами gsl. Проблема заключается в функции TextMate.Executor, которую я полностью игнорирую и для которой я не нашел исчерпывающей ссылки.
Вот что я пробовал:
#!/usr/bin/env ruby
require ENV["TM_SUPPORT_PATH"] + "/lib/tm/executor"
require ENV["TM_SUPPORT_PATH"] + "/lib/tm/save_current_document"
mode = ENV["TM_SCOPE"].slice(/.*?\bsource\.((?:obj)?c(\+\+)?)/, 1)
case mode
when "c"
g = "GCC"
env = "C"
ext = "c"
lang = "c"
when "c++"
g = "GXX"
env = "CXX"
ext = "cc"
lang = "c++"
when "objc"
g = "GCC"
env = "OBJC"
ext = "m"
lang = "objective-c"
when "objc++"
g = "GXX"
env = "OBJCXX"
ext = "mm"
lang = "objective-c++"
end
TextMate.save_current_document(ext)
TextMate::Executor.make_project_master_current_document
flags = ENV["TM_#{env}_FLAGS"] || "-Wall -include stdio.h $(gsl-config --cflags) "
args = [ENV["TM_#{g}"] || g.downcase.gsub("x", "+"), flags + " -x #{lang}", ENV["TM_FILEPATH"]+" $(gsl-config --libs)"]
TextMate::Executor.run(args, :version_args => ["--version"])