Comments 29
Интересует как подрубить эту радость в MacOSX для Cocoa Framework (MacDev) и iOs. У меня сейчас сделано вот так:
Но подсказки оставляют желать лучшего, а писать Obj-C код без подсказок (обьемистый, зараза)… приходится все писать в XCode.
"options":
[
"-isystem", "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/usr/include/",
"-isystem", "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/usr/include/c++/4.2.1",
"-F/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/",
"-isystem", "/usr/include",
"-isystem", "/usr/include/c++/*",
"-Wall"
]
Но подсказки оставляют желать лучшего, а писать Obj-C код без подсказок (обьемистый, зараза)… приходится все писать в XCode.
0
Однако, среди комментариев мне лично ни разу не встречалось упоминаний о плагине SublimeClang, который кардинально меняет работу C++ программиста в этом редакторе
Я где-то в комментариях писал, как превращал его в IDE для STM32
С дебагом, кстати :)
0
Clang не умеет майкрософтовский код разбирать, особенно atl и mfc. К виму он (clang) кстати тоже легко прикручивается.
+1
Имхо для плюсов (да ещё и в связке с CMake) гораздо удобнее QtCreator. Да это IDE но не слишком монструозная, зато никаких танцев с установкой и настройкой.
+3
Фатальный недостаток это завязка на clang. На линуксе всё ещё главенствует gcc, на windows vc, так что принимяемость стремиться к 0. Конечно, это не недостаток плагина, а, скорее, архитектуры gcc.
0
Я не вижу никакой сложности скомпилировать clang.
+1
Я вижу падение производительности, а это сложность. Плюс надо пересобирать кучу библиотек тоже clang'ом. Eclipse и так автодополняет вполне сносно.
0
Зачем пересобирать библиотеки? Вы же используете clang для автодополнения, а для компиляции — хоть borland c++ 3.0.
Кроме того, библиотеки, собранные clang и gcc совместимы по ABI.
Кроме того, библиотеки, собранные clang и gcc совместимы по ABI.
+1
Ну в том и дело, что анализирует один компилятор, а компилит другой. И в этом есть нюансы, особенно в c+11, который поразному везде доделан пока.
Если статичски линковать, то там даже разные версии gcc уже не подойдут.
Если статичски линковать, то там даже разные версии gcc уже не подойдут.
0
C++11 в Clang 3.2 и gcc 4.7 доделан так, что вам нужно быть в комитете по стандартизации C++, чтобы заметить разницу.
Про статическую линковку — не знаю о такой проблеме. Во-первых, сегодня никто не линкует статически, а во-вторых, какая проблема возникает?
Про статическую линковку — не знаю о такой проблеме. Во-первых, сегодня никто не линкует статически, а во-вторых, какая проблема возникает?
+1
Попробовал часть проектов собрать clang' ом. Сразу же напоролся:
struct A {
int a;
A(int _a=5): A{_a} {};
};
int main() {}
gcc47 — компилит без вопросов, clang32:
1.cpp:5:20: error: expected member name or ';' after declaration specifiers
A(int _a=5): A{_a} {};
^
1.cpp:5:15: error: expected '('
A(int _a=5): A{_a} {};
^
1.cpp:5:18: error: expected ';' after expression
A(int _a=5): A{_a} {};
^
;
1.cpp:5:16: warning: expression result unused [-Wunused-value]
A(int _a=5): A{_a} {};
^~
1 warning and 3 errors generated.
И это не абы какие завороты c++11
struct A {
int a;
A(int _a=5): A{_a} {};
};
int main() {}
gcc47 — компилит без вопросов, clang32:
1.cpp:5:20: error: expected member name or ';' after declaration specifiers
A(int _a=5): A{_a} {};
^
1.cpp:5:15: error: expected '('
A(int _a=5): A{_a} {};
^
1.cpp:5:18: error: expected ';' after expression
A(int _a=5): A{_a} {};
^
;
1.cpp:5:16: warning: expression result unused [-Wunused-value]
A(int _a=5): A{_a} {};
^~
1 warning and 3 errors generated.
И это не абы какие завороты c++11
0
Спасибо, завёл баг:
llvm.org/bugs/show_bug.cgi?id=15106
llvm.org/bugs/show_bug.cgi?id=15106
0
Вы забыли -std=c++11
$ clang -std=c++11 /tmp/zzz.cc
/tmp/zzz.cc:3:14: error: constructor for 'A' creates a delegation cycle [-Wdelegating-ctor-cycles]
A(int _a=5): A{_a} {};
^
1 error generated.
$ clang -std=c++11 /tmp/zzz.cc
/tmp/zzz.cc:3:14: error: constructor for 'A' creates a delegation cycle [-Wdelegating-ctor-cycles]
A(int _a=5): A{_a} {};
^
1 error generated.
+2
Эти нюансы позволяют писать менее компиляторозависимый код. В нормальном коде их вообще не должно быть.
+1
С++ это не только язык, но и ещё и STL. И там есть нюансы gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.200x про clang не нашёл, но это: clang.llvm.org/cxx_status.html говорит о том, что там не всё 100% тоже.
Плюс ещё всякие расширения типа openmp о которых clang вообще не слышал. Это, конечно, наверное никому кроме меня не нужно, но всё же.
Плюс ещё всякие расширения типа openmp о которых clang вообще не слышал. Это, конечно, наверное никому кроме меня не нужно, но всё же.
0
Вы внимательно почитайте, напротив чего стоит No в clang.llvm.org/cxx_status.html По-моему этого вообще нигде нет.
Про STL — во-первых, не STL, а стандартная библиотека, а во-вторых, в Linux вы получите по умолчанию одинаковую стандартную библиотеку и в gcc, и в Clang (GNU libstdc++), а на Mac OS X получите libc++, в которой всё есть.
Про STL — во-первых, не STL, а стандартная библиотека, а во-вторых, в Linux вы получите по умолчанию одинаковую стандартную библиотеку и в gcc, и в Clang (GNU libstdc++), а на Mac OS X получите libc++, в которой всё есть.
0
llvm есть в любом дистрибутиве из коробки, clang ставится ровно одним пакетом, что сложного то? Собрать llvm+clang на винде дело 10 минут.
+1
В дебиане например старая версия clang, приходится из исходников 3.2 ставить.
0
Дебиан вообще для разработки немного глупо использовать, он слишком старый.
0
Да ладно, testing/sid в самый раз.
0
Зря вы так, если целевая платформа — Дебиан (а у нас например так), то будет глупо разрабатывать под виндой, или в Убунту\Генту, где на стабильных версиях дистрибутива glibc новее версий на 5, чем в тестовом дебиане.
+1
Не было упоминаний лишь потому, что установка и настройка плагина настолько тривиальна, что у разработчика C/C++ не должно возникнуть никаких вопросов.
После установки плагина выскакивает сообщение о необходимости сборки clang из исходников. А дальше cmake вам в руки.
После установки плагина выскакивает сообщение о необходимости сборки clang из исходников. А дальше cmake вам в руки.
0
Странно и неприятно видеть, что он даже не готов воспринять директорию из проекта как include директорию.
Кроме того, у меня стабильно крешился при добавлении root директории проекта в include dirs. Может, к большим проектам он таки не готов.
Кроме того, у меня стабильно крешился при добавлении root директории проекта в include dirs. Может, к большим проектам он таки не готов.
0
Только собрался почитать вашу статью, как вышла бета Sublime Text 3 со встроенной поддержкой навигации по проекту. :) Работает отлично!
0
Sign up to leave a comment.
Sublime Text 2 для C/C++ разработчика или SublimeClang