我在编译包含其他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)
答案 0 :(得分:1)
TextMate仅对您当前正在编辑的.cpp文件进行简单编译。与Xcode或其他完整开发环境不同,它不会编译项目中的其他源文件或执行链接。
(在TextMate中单击Bundles> Bundle Editor> Show Bundle Editor,然后在C部分选择Run,当你“运行”一个.cpp文件时,你会看到TextMate正在做什么。)
答案 1 :(得分:1)
您可能需要添加其他命令行参数...
您可以通过更改变量TM_CXX_FLAGS向g ++添加其他命令行参数。
执行此操作的最佳方法可能是添加每个项目变量: http://manual.macromates.com/en/environment_variables#project_dependent_variables
如果更改是全局的,您可以将其添加到TextMate的静态变量部分 http://manual.macromates.com/en/environment_variables#static_variables
答案 2 :(得分:0)
我没有足够的信息来确定您正在调用的命令。
如果它是Xcode.tmbundle Build and Run,那么它正在调用xcodebuild - 你应该能够在Xcode中重现并修复错误。