如何評價 JetBrains 的新 C/C++ IDE CLion?
CLion — intelligent cross-platform C/C++ IDE
目前最主要的問題是build system的支持太弱 (只支持CMake)如果你重新寫一個新的項目完全沒問題,用CMake就好了,但是已有項目切換Build System太麻煩,所以還是Eclipse大法好 (VS for Mac呢?)。
我試用了一段時間的CLion,比EAP早一點。CLion最大的問題在於不能讀取CMakeCache,以及沒辦法執行帶參數的CMakeGenerate。界面的響應速度上,比PyCharm要好很多,基本上沒有什麼延遲之類的問題了。
千呼萬喚始出來
用過挺長一段時間的PyCharm,短暫用過Intellij IDEA
根據JetBrains的慣例,這個CLion用起來估計很爽,怎麼個爽法呢,這麼個爽法
總之一句話,就是通透根據JetBrains的慣例,這個CLion應該是要收錢的,只是不知道會不會有免費的Community Edition或者OSChina打折神馬的
根據JetBrains的慣例,顯示器起碼也得是27寸的,要不打開幾個常用窗口就什麼都看不見了
當然,長期以來一直有某些IT界的外圍婊習慣於在IDE相關問題下發表「用記事本也能寫牛逼的代碼」的言論,這種,我稱其為IDE界的反智主義,類似於「編程語言根本不重要,重要的是思想」「用什麼工具根本不重要,重要的是人」
呸
不服寫個代碼看看
======================================================================
翻了下Known issues,感覺EAP是個半成品的樣子
- On the large code bases (especially when using Boost) performance and memory issues during indexing and editing are possible (increasing memory may help).
確實略卡
昨天用了一下Clion 和Resharper for C++.
- 基本上Resharper for C++還處在初級階段, parsing的速度不如Visual Assist X, Resharper裝在VS2013上表現還算正常, 裝在VS2012上Find Usage定位會出錯, 而且卸掉以後居然需要修復VS, 嚇得我一身冷汗
- CLIon 在Mac上就基本上不用做任何配置, VIM插件不錯,要好於VS上的VsVim. CLion上的Feature要比Resharper For C++多, 畢竟CLion是專門為C++設計的.
- CLion界面是基於IntellJ IDEA平台的, 一如既往的丑, 用過VS+VA的會稍微有點不爽, CLion好像沒有默認的滑鼠懸停(用的時間短, 請指正)
- 用虛擬機里的Ubuntu裝了一下CLion, 卡到不行, 不多說了
Mac OS X 和 Ubuntu 用戶應該會很開心
作為Jetbrains產品的忠實粉絲,覺的業內最優秀的IDE製作商這個稱號表示毋庸置疑的;
好吧,我是個腦殘終極粉:
對於說他們的產品不美的,我表示呵呵;
對於說他們的產品很慢的,我表示你的硬體該升級了;
對於說他們的產品死貴的,我表示.....好吧,你是對的......一分錢一分貨對於說開源工具是未來和趨勢,當遇到他們的產品,我打上了深深的問號正如樓上的回答,用他們的工具一個字:爽,兩個字:超爽,三個字:爽歪歪......我這個腦殘終極粉做了什麼:
我是搞cocos遊戲開發的,因為太喜歡Jetbrains了,所以把VC,Eclipse什麼的一腳踢開,直接基於Jetbrains產品做了一些有趣的東西,從此開發跨平台遊戲一馬平川,順暢的很.....這些東西都可以在我的博客找到 關於 | CocosEditor官方博客- 基於Intellij Idea終極版的插件:CocosEditor For Cocos2d-JS
- 基於Intellij Idea社區版的獨立工具:CocosEditor For Cocos2d-Java
- 基於CLion的工具: CocosEditor For Cocos2d-X (準備中)
一打開 風扇就拚命轉
Pycharm就死掉了
這個IDE應該會對cmake mingw和cygwin提供原生支持吧 主要是在跨平台開發有優勢相比與Codeblocks和其他跨平台IDE優勢比較明顯 但是想對於在WIndows的本地開發應該比不上VS 但是估計會提供社區版(免費的)Mac OSX上C++開發估計他是最適合的吧
(一點小建議:這個題目下的答案大多數是去年第一個EAP版本時寫的答案,經過了半年,CLion增加了很多特性 ,也修復了大量bug,可以的話還希望大家根據現在試用的狀況修訂一下答案,至少標明這是哪個版本的狀況。)
看上去這是一個足夠好用的C/C++ IDE,而足夠好用的C/C++ IDE並不算多。
如果你是一個C/C++程序員,你的IDE選擇有什麼呢?
- Visual Studio是Windows下的當然選擇,但是VS的C/C++補全重構功能遠遠比不上C#的相關功能,而且msvc編譯器長期以來支持標準的速度比較慢,使用自有的solution格式也給維護項目增加了很多困惑。
- Eclipse CDT和Eclipse本身的缺點很類似。特性很全,但是相對來說bug比較多,比較遲緩。代碼提示和搜索功能和JetBrains的產品差一個數量級。
- Netbeans的性能和debugger也一直有點問題。非常喜歡不斷parse代碼。不過支持遠程開發和debug是一個非常好的特性。
- Qt Creator KDeveloper其實是兩個相對不錯的選擇,但是在智能感知,項目管理、重構、quick fix這些方面始終有些差距。
(我有一段時間沒有用過VS/JetBrains以外的ide了,這是我原來實驗工具時留下的印象,未必適用於現在的情況。)
如果你滿足於使用Windows平台+msvc編譯器的話,VS+VA X插件可以提供一個很不錯的環境,但是對於使用開源工具鏈的開發者和Linux開發者來說,並沒有太好的選擇。vim/emcas的用戶多,除了性能和遠程開發的方便程度以外,很大程度上是因為這些C/C++ IDE能提供的功能並不比vim+YouCompleteMe提供的特性多。
而就我目前的Beta版使用經驗而言,CLion在這些方面做的很不錯:
- 非常好的智能感知功能,自動摺疊、高亮、自動補全、類型推斷都很好。
- Autofix工作的很好。
- 重構很方便,像inline函數、extract成員函數、常數,pull up/pull down、修改簽名這些功能都有。
- 調試功能很方便,可以自動解析STL容器。
- 繼承了jetbrains系ide的很多優點,像方便的vim插件和keymap調整,滾動條預覽,與VCS的緊密集成等等。
- 跨平台,支持CMake/gcc/clang/mingw/cygwin/gdb。雖然不多,但是其實基本上也夠用了。
- 簡潔,沒有額外的抽象層,你直接通過控制CMakeLists/CMakeCache來控制項目的編譯。這樣無需額外學習一遍IDE項目相關的概念,而且省去了VS+CMake時每改一次CMakeLists就要generate一次solution的麻煩。
- 很快,當然我也沒有導入很大很大的項目,不知道結局是什麼樣。
當然,今天的CLion還有很多缺點,比如說一以貫之的吃內存(隨便打開個項目吃掉1G很正常)、比如說還不支持lldb(1.1版本即將支持)、不支持遠程開發調試、不支持makefile/autotools項目、沒有測試框架支持。最大的問題就是,在處理大項目的時候,CLion的性能能跟得上嗎?
不考慮這些因素,CLion是一個很好用的ide。設計合理簡潔、核心功能完成的很出色。而像我開篇就說的,能滿足這個條件的C/C++ IDE幾乎沒有。在使用開源工具鏈的場景下,CLion是第一個讓我有理由考慮代替vim的C/C++ IDE.
而這只是一個1.0版本,考慮到JetBrains的一貫水準,CLion的未來值得期待。作為一個編程老鳥,折騰了好幾個下午,換了各種mingw,cygwin版本後依然無法正常編譯,只能說EAP版本的clion還是沒法用的。只能等後續版本了
雖然是很期待。。。不過mac版build自帶的hello world要等半分鐘是幾個意思加上之前appcode的inspection老是提示functor有錯。。。感覺還有很長的路要走。。。
我主要在Ubuntu下工作,有時使用MacOS。幾個月前在新的項目中用上了Clion,非常爽,沒有它,我的工期估計要向後拖很久,都不知道是否能完成。雖然我很喜歡Emacs,但是我再也不想用它寫C/C++了,除非是幾個文件幾個函數的toy program,我想不出任何理由用vim/Emacs. 當然筆記還是使用Emacs。
優點:
我主要用它看代碼,寫代碼。
1. 一鍵顯示函數調用關係。2. 查找變數和函數的引用。3. 查找符號4. 查找文件5. git 提交流程做得也很好,review 哪裡做了修改十分方便。缺點:1. 不能在32位系統中使用,很蛋疼,我之前的主力工作機是32位,這也是我這麼晚才用Clion的原因。2. 性能問題,把整個Linux kernel import進去後,它就崩潰了。我只好import部分。3. 不支持makefile, 只支持CMake。所以我只用它看代碼,寫代碼,不用作編譯和調試。4. 字體比較難看,當然,這完全不影響使用。似乎基於Java平台的字體都不好看,有誰科普一下嗎?
只支持gnu工具鏈。在win下只有cygwin/mingw支持,不能用msvc/icc,心塞。
想不通為什麼一個ide會限定支持的編譯器類型。如果需要編譯期以外調用工具鏈,那不應該直接集成到自己的代碼庫里搞嗎,像qt creator就是基於clang,也沒要求你一定用clang啊。沒有Mac,不發表Mac的使用體驗,說說Windows和KUbuntu下的使用。剛出來,在公司用的KUbuntu,公司除了用Mac的幾個壕,基本上都用Windows了,就我一個Linux。好吧,被輸入法折磨了,喜歡用Windows。KUbuntu: 下載下來是tar.gz 包,一般解壓到/opt/clion 目錄 沒有mkdir就行,直接雙擊bin/clion.sh,脫脫的運行起來,環境配置,自動檢查你的系統是否有c/c++編譯器。雖然官方說不支持CMake 3 or Later. 但是一個簡單的hello world還是搞定了,複雜的項目預計會出現問題,畢竟官方說了暫時不支持。上圖:
- CLion supports only GNU toolchain, that means only GCC and Clang compilers on Linux and OS X, and MinGW (version 3.2 only, 64-bit version is not supported yet) and Cygwin toolchains on Windows.Note: If you are using Visual Studio for C++ development (and Visual C++ Compiler), try our ReSharper for C++.
- CLion supports only the following C and C++ standards: C99, C++03, C++11.
- C++11 user-defined literals are not supported.
- C++11 сonstexpr expressions (OC-10355, CPP-396) and enum classes (OC-9129) are not fully supported.
- CMake 3 is not yet supported.
- Environment variables and parameters can"t be passed to the CMake command (CPP-188). Write them in CMakeLists.txt files directly or set in CMakeCache. To add parameter to CMakeCache use this workaround until we fix an issue with adding custom parameters to Cache from the IDE.
根據JetBrain的慣例,這個IDE肯定是要錢的,而Visual Studio Express不用錢。
不過我對JetBrain的技術水平一直抱有好感,只要他好好把這個IDE做漂亮一點,肯定會有人合法使用的,現在看截圖覺得回到了上個世紀……
Qt-Creator用戶過來祝賀下、、存在即合理,不評價、、
雖然很多JetBrain吹說這個IDE如何如何好用,但是我堅持用了一段時間之後發現還不如Eclipse+CDT+其他輔助插件
Mac用戶,找C++ IDE很久了(XCode只適合搞蘋果開發,寫純C++代碼麻煩的一逼)
CLion只支持CMake是硬傷,而且還不支持各種帶參的CMake簡直了(各路開源項目里經常要),希望日後支持更多的build system(起碼支持個Makefile啊)因此我在電腦上裝了很多IDE,CLion、Eclipse、QT Creator,根據情況選擇。當然我也是spacemacs用戶,不過一般能用IDE的時候還是會用IDE,因為確實方便。我認為我們中國程序員,就應該堅持老祖宗多年不信教的傳統,走實用主義路線,都用上、啥好用用啥,堅決不信任何一個教派。我只信仰中國GCDI like It very much
相信有好多人對於jetbrains的一系列產品有著強烈的收藏欲,比如這樣:不知道為啥,我想起來了曇花一現的kylix和c++builder x。不知道體驗過這兩個曾經的自稱殺手級開發工具的用戶這裡還有幾個 :)---補充,這種似曾相識的感覺應該是來自於他們對特定版本GNU工具鏈的依賴。
推薦閱讀:
※C++ unordered_map 中 double 作key如何在模板參數中實現?
※C++ std::set 的實現中對於iterator的這個強制轉換是如何進行的?
※C# 為什麼去掉了C++中頭文件的概念?
※如何使用C++編寫一個模板,可以同時適用於數組和vector<int>類型且避免數據的複製?