C++ C栋和x2B栋+;11和TextMate?

C++ C栋和x2B栋+;11和TextMate?,c++,c++11,textmate,C++,C++11,Textmate,对于一个常规的C++98程序,要从TextMate运行它,我需要做的就是⌘R从TextMate运行它。然而,对于C++11,这并不是开箱即用的。例如,如果我有以下程序: #include <iostream> using namespace std; int main() { for (auto i : {1, 2, 3}) cout << i << " "; cout << "\n"; } #包括 使用名称空

对于一个常规的C++98程序,要从TextMate运行它,我需要做的就是⌘R从TextMate运行它。然而,对于C++11,这并不是开箱即用的。例如,如果我有以下程序:

#include <iostream>
using namespace std;

int main()
{
    for (auto i : {1, 2, 3})
        cout << i << " ";

    cout << "\n";
}
#包括
使用名称空间std;
int main()
{
对于(自动i:{1,2,3})

cout我可以通过在运行包中添加-std=c++11来解决这个问题,这似乎有点迂回。有没有一种方法可以全局更新TM_CXX_标志?(目前TextMate似乎没有接收到我对TextMate首选项中设置的TM_CXX_标志所做的更改)

这是我当前的解决方法:(这是我的运行包。我所做的唯一更改是添加-std=c++11)

#!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/Ruby
需要“#{ENV['TM_SUPPORT_PATH']}/lib/TM/executor”
需要“#{ENV['TM_SUPPORT_PATH']}/lib/TM/save_current_document”
需要“shellwords”
配置={
'source.c'=>[ENV['TM_GCC']||||||'xcrun clang',“-xc#{ENV['TM_c|FLAGS']| |'-Wall-include stdio.h','c'],
'Endo.cc''> [Env[txMGXX’] 'xCun CLAN+++,“-xc++-STD= C++ 11”{eNV[tMyCXXILFLAG' ] [S'di-CXXFLAG' ]包括STDIO .H-包括IOSTROW-WC++ 11扩展名},'CCC '],
'Enc+C++’> [Env[txMGXX’] 'xCun CLAN+++,“-xc++-STD= C++ 11”{eNV[tMyCXXILFLAG' ] [S'di-CXFLAG'——包括STDIO .H-包括IOSWATOR- WC++ + 11扩展名},'cc'′,
'source.objc'=>[ENV['TM_GCC']| | | | | | | | xcrun clang',“-x objective-c#{ENV['TM_objc| | | |']-Wall-include stdio.h-framework coca','m'],
'source.objc++'=>[ENV['TM_GXX']| | |'xcrun clang++',“-x objective-c++#{ENV['TM_OBJCXX_FLAGS']| |']-Wall-include stdio.h-include iostream-framework Cocoa','mm'],
}
cc,flags,ext=*CONFIG['source.objc++']#默认值
cc,flags,ext=*CONFIG[$&]如果ENV[“TM\u SCOPE”]=~/\b源\(obj)?c(+\++)/
TextMate.save_if_untitled(ext)
TextMate::Executor.make_project_master_current_文档
args=Shellwords.split(cc)/\A([^\n]*)\(GCC\).*/m)

我可以通过在运行包中添加-std=c++11来解决这个问题,这似乎有点迂回。有没有一种方法可以全局更新TM_CXX_标志?(目前TextMate似乎没有接收到我对TextMate首选项中设置的TM_CXX_标志所做的更改)

这是我当前的解决方法:(这是我的运行包。我所做的唯一更改是添加-std=c++11)

#!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/Ruby
需要“#{ENV['TM_SUPPORT_PATH']}/lib/TM/executor”
需要“#{ENV['TM_SUPPORT_PATH']}/lib/TM/save_current_document”
需要“shellwords”
配置={
'source.c'=>[ENV['TM_GCC']||||||'xcrun clang',“-xc#{ENV['TM_c|FLAGS']| |'-Wall-include stdio.h','c'],
'Endo.cc''> [Env[txMGXX’] 'xCun CLAN+++,“-xc++-STD= C++ 11”{eNV[tMyCXXILFLAG' ] [S'di-CXXFLAG' ]包括STDIO .H-包括IOSTROW-WC++ 11扩展名},'CCC '],
'Enc+C++’> [Env[txMGXX’] 'xCun CLAN+++,“-xc++-STD= C++ 11”{eNV[tMyCXXILFLAG' ] [S'di-CXFLAG'——包括STDIO .H-包括IOSWATOR- WC++ + 11扩展名},'cc'′,
'source.objc'=>[ENV['TM_GCC']| | | | | | | | xcrun clang',“-x objective-c#{ENV['TM_objc| | | |']-Wall-include stdio.h-framework coca','m'],
'source.objc++'=>[ENV['TM_GXX']| | |'xcrun clang++',“-x objective-c++#{ENV['TM_OBJCXX_FLAGS']| |']-Wall-include stdio.h-include iostream-framework Cocoa','mm'],
}
cc,flags,ext=*CONFIG['source.objc++']#默认值
cc,flags,ext=*CONFIG[$&]如果ENV[“TM\u SCOPE”]=~/\b源\(obj)?c(+\++)/
TextMate.save_if_untitled(ext)
TextMate::Executor.make_project_master_current_文档
args=Shellwords.split(cc)/\A([^\n]*)\(GCC\).*/m)
首选项中的默认变量→ 默认情况下禁用变量

因此,您需要通过选中最左侧列中的复选框来启用
TM\u CXX\u标志。

首选项中的默认变量→ 默认情况下禁用变量


因此,您需要通过选中最左边一栏中的复选框来启用
TM\u CXX\u FLAGS

谢谢艾伦:)天哪,我知道我忽略了一些明显的东西。您不是第一个忽略复选框的人,所以我已使其在编辑时自动启用:再次感谢。是的,我猜可能还有其他一些人忽略了此复选框被这个难住了。谢谢你艾伦:)天哪,我知道我忽略了一些明显的东西。你不是第一个忽略复选框的人,所以我让它在编辑时自动启用:再次感谢。是的,我猜可能会有一些其他人被这个难住了。谢谢,这很有帮助。谢谢,这很有帮助。
untitled:6:10: warning: 'auto' type specifier is a C++11 extension [-Wc++11-extensions]
    for (auto i : {1, 2, 3})
         ^
untitled:6:17: warning: range-based for loop is a C++11 extension [-Wc++11-extensions]
    for (auto i : {1, 2, 3})
                ^
untitled:6:19: error: cannot deduce type of initializer list because std::initializer_list was not found; include <initializer_list>
    for (auto i : {1, 2, 3})
                  ^
2 warnings and 1 error generated.
#!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby

require "#{ENV['TM_SUPPORT_PATH']}/lib/tm/executor"
require "#{ENV['TM_SUPPORT_PATH']}/lib/tm/save_current_document"
require "shellwords"

CONFIG = {
  'source.c'      => [ ENV['TM_GCC'] || 'xcrun clang',   "-x c             #{ENV['TM_C_FLAGS']      || '-Wall -include stdio.h'}",                                    'c'  ],
  'source.cc'     => [ ENV['TM_GXX'] || 'xcrun clang++', "-x c++ -std=c++11          #{ENV['TM_CXX_FLAGS']    || '-Wall -include stdio.h -include iostream -Wc++11-extensions'}",                  'cc' ],
  'source.c++'    => [ ENV['TM_GXX'] || 'xcrun clang++', "-x c++ -std=c++11          #{ENV['TM_CXX_FLAGS']    || '-Wall -include stdio.h -include iostream -Wc++11-extensions'}",                  'cc' ],
  'source.objc'   => [ ENV['TM_GCC'] || 'xcrun clang',   "-x objective-c   #{ENV['TM_OBJC_FLAGS']   || '-Wall -include stdio.h -framework Cocoa'}",                   'm'  ],
  'source.objc++' => [ ENV['TM_GXX'] || 'xcrun clang++', "-x objective-c++ #{ENV['TM_OBJCXX_FLAGS'] || '-Wall -include stdio.h -include iostream -framework Cocoa'}", 'mm' ],
}

cc, flags, ext = *CONFIG['source.objc++'] # default
cc, flags, ext = *CONFIG[$&] if ENV["TM_SCOPE"] =~ /\bsource\.(obj)?c(\+\+)?/

TextMate.save_if_untitled(ext)
TextMate::Executor.make_project_master_current_document
args = Shellwords.split(cc) << Shellwords.split(flags) << ENV["TM_FILEPATH"]
TextMate::Executor.run(args, :version_args => ["--version"], :version_regex => /\A([^\n]*) \(GCC\).*/m)