2011-02-05 40 views
2

我編譯包含另一個cpp文件的cpp有問題 所以我有Main.cpp Numbers.h和Numbers.cpp,看起來TextMate只編譯我的Main.cpp,並且不包括其餘。我試着使用Xcode和它工作正常..用文本編譯C++

這裏是TextMate的CMD + R錯誤:

未定義的符號: 「號::號碼(INT)」,從引用:在ccMrD1Eq _main的.o 「號::打印()」,從引用:在ccMrD1Eq.o LD _main:符號(S)沒有發現 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) 

回答

1

TextMate的只做你當前正在編輯.cpp文件的一個簡單的編譯。與Xcode或其他完整開發環境不同,它不會編譯項目中的其他源文件或執行鏈接。

(在點擊的TextMate捆綁>捆綁編輯>顯示包編輯器,然後選擇運行在C部分,你會看到什麼TextMate的在做,當你「運行」 .cpp文件。)

+0

好吧..謝謝..我會嘗試修改運行命令。 – BlackSoil

0

我沒有足夠的信息來確定你正在調用的命令。

如果它是Xcode.tmbundle構建並運行,那麼它調用xcodebuild - 您應該能夠重現和修復Xcode中的錯誤。

+0

我在上面附加了被調用的命令..我不確定如何修復它..它不像Java或Ruby中的run-command那麼直觀...... – BlackSoil