Компиляция C ++ с textmate - PullRequest
       15

Компиляция C ++ с textmate

2 голосов
/ 05 февраля 2011

У меня проблема с компиляцией cpp, включающей другие файлы cpp поэтому у меня есть Main.cpp Numbers.h и Numbers.cpp, и кажется, что TextMate только компилирует мой Main.cpp и не включает в себя все остальное. Я пытался использовать xcode, и он работал нормально ..

Вот ошибка из TextMate cmd + R:

Неопределенные символы: "Numbers :: Numbers (int)", на которые ссылаются из: _main в ccMrD1Eq.o "Numbers :: print ()", на которую ссылаются из: _main в ccMrD1Eq.o ld: символ (ы) не найден collect2: ld вернул 1 статус выхода

Есть предложения?

Кстати, вот вызванная команда:

#!/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 #{"-include iostream" unless mode[/c\+\+$/].nil?} #{"-framework Cocoa" unless mode[/^obj/].nil?}"
args = [ENV["TM_#{g}"] || g.downcase.gsub("x", "+"), flags + " -x #{lang}", ENV["TM_FILEPATH"]] 

TextMate::Executor.run(args, :version_args => ["--version"], :version_regex => /\A([^\n]*) \(GCC\).*/m)

Ответы [ 3 ]

1 голос
/ 16 июля 2011

Возможно, вам нужно добавить дополнительные параметры командной строки ...

Вы можете добавить дополнительные параметры командной строки в g ++, изменив переменную TM_CXX_FLAGS.

Возможно, лучший способ сделать этоЧтобы добавить переменную для каждого проекта: http://manual.macromates.com/en/environment_variables#project_dependent_variables

Если изменение предназначено для глобального использования, вы можете добавить его в раздел статических переменных TextMate http://manual.macromates.com/en/environment_variables#static_variables

1 голос
/ 05 февраля 2011

TextMate выполняет только простую компиляцию файла .cpp, который вы сейчас редактируете.В отличие от Xcode или других полноценных сред разработки, он не будет компилировать другие исходные файлы в проекте или выполнять связывание.

(В TextMate выберите «Пакеты»> «Редактор пакетов»> «Показать редактор пакетов», затем выберите «Выполнить» в разделе «C»), и вы увидите, что именно делает TextMate при «запуске» файла .cpp.)

0 голосов
/ 05 февраля 2011

У меня недостаточно информации, чтобы быть уверенным в команде, которую вы вызываете.

если это Xcode.tmbundle Build and Run, то это вызывает xcodebuild - вы должны быть в состоянии воспроизвести и исправитьошибка в Xcode.

...