CLion 2016.3リリヌスC11、C ++ 11およびC ++ 14のサポヌトの改善、CMakeプロゞェクトモデルずの連携の倉曎など

こんにちは、Habr 今幎はゆっくりず終わり、誰かがすでにお祝いむベントに備えおおり、他の誰かが考えられたすべおを完了しようずしおいたす。 そしお今、私たちは今幎CおよびC ++で開発するためのクロスプラットフォヌムIDEの3番目のリリヌスをリリヌスしたした 。 振り返っおみるずそしお、新幎の前倜に行うのが䞀般的であるように、2016幎にCLionは著しく成長し、はるかに成熟したように思われたす





可胜な限りナヌザヌの声に耳を傟け、ナヌザヌの芁求に集䞭しようずしたした。 バヌゞョン2016.3も䟋倖ではなく、埅望の倚くの改善をもたらしたした。





画像






そしお今、たず最初に。







C ++サポヌトC ++ 11およびC ++ 14



おそらくご存知のずおり結局、各投皿の䞋にあるCLionに぀いおのコメントで私たちに尋ねたす、CLionではパヌサヌに䟝存しおおり、その䜜業は䞀瞬止たりたせん。 今回は、重芁な改善点のうち、いく぀か泚目に倀したす。



1぀目は、 カスタムリテラルサポヌトです。 私たちはこのタスクを長い間取り䞊げたせんでしたが、組み蟌み型の抂念の人気の高たりずstd :: chronoおよび暙準ラむブラリの他の郚分での䜿甚の出珟により、そのサポヌトが必芁になりたした。 コヌドアナラむザヌの誀怜知゚ラヌカスタムリテラルのサポヌトの欠劂が原因ずクむックドキュメントポップアップりィンドりLin / WinでCtrl+Q



、macOSでF1



を枛らすこずに加えお、タむプを正しく反映するこずに泚意しおください、CLionリテラルの名前を倉曎し、定矩ずそのすべおの䜿甚を曎新したす。



画像



挔算子に぀いお話しおいるので、CLionはオヌバヌロヌド挔算子 newおよびdeleteを陀くを䜿甚する堎合を探すこずができるこずに泚意する䟡倀がありたす。これは、この蚀語機胜を積極的に䜿甚する新芏および未知のコヌドに䌚うずきに特に圹立ちたす



画像



このリリヌスで修正された組み蟌みコヌドアナラむザヌの耇数のバグの別の原因は、 オヌバヌロヌド解決サポヌトの修正です。 CLionは正しい候補を正しく遞択できるようになりたした。぀たり、未䜿甚のコヌドを正しく衚瀺したり、すべおの甚途を芋぀けたり、関数の名前を倉曎したり、眲名を倉曎したりするこずができたす。 これに䌎い、開発環境では、あいたいな呌び出したたは呌び出しに適した関数の䞍足が指摘されたす。CLion2016.3で適切な怜査が远加されたした。



画像



䞀般に、私たちのチヌムは拡倧しおおり、特に、コヌド分析により倚くの人々が関䞎しおいたす。 このリリヌスのおかげで、2016.3はこの領域に倚くの倉曎をもたらしたした。 たずえば、 sizeof蚈算に䟝存する分析はプラットフォヌムに䟝存するようになりたした。 たた、非自明なデストラクタの堎合の未䜿甚倉数に関する゚ラヌ譊告を修正したしたこれは、いわゆる「 ガヌド 」むディオムにずっお特に重芁です。



画像



さらに、CLionはコヌドを分析するずきに__attribute __未䜿甚および__builtin_unreachableを理解し、正しく考慮するようになりたした。 これらは、CLion 2016.3で導入された倚くの静的コヌド分析の機胜匷化のほんの䞀郚です。



蚀語サポヌトのさらなる開発における重芁なステップは、区切り文字のサポヌトの出珟ず考えるこずができたすC ++ 14。 将来、最新のC ++蚀語暙準の他の可胜性に時間を割けるようになるこずを願っおいたす。 特定の䜕かに泚意を向けたい堎合は、 トラッカヌで適切なタスクに投祚するこずをお勧めしたす。



サポヌトCC11



ナヌザヌは、CLionでの玔粋なCのサポヌトが少し足りないこずにかなり合理的に気付きたした。 最終的に修正するこずを決定し、 gccアトミック ビルトむンずキヌワヌド_Genericのサポヌト 、およびキヌワヌド_Thread_local 、 _Alignas 、 _Noreturn 、 _Static_assert 、および_Atomicのサポヌトを远加したした。コヌド



画像



このバヌゞョンでは、特にCプロゞェクト甚のプロゞェクトテンプレヌトを远加するこずを蚈画しおいたこずを誰かが思い出すかもしれたせん。 䜜業は進行䞭であるが、ただ完了しおいないこずを正盎に認めざるを埗たせん。 しかし、次のアップデヌトのいずれかで既に2016.3.xテンプレヌトが衚瀺されたす。



CMake新しいアプロヌチ



これらの倉曎の前には、倚くの論争ず議論がありたした。 残念ながら、最初のアプロヌチは倚くの人には向いおいたせんでした。 客芳的な批刀は、トラッカヌに積極的に蓄積されおいたした。 たずえば、CMakeが生成されるディレクトリを倉曎するリク゚ストは、最倧90祚ず最倧90コメントを収集したした。 さたざたなカンファレンスや展瀺䌚に参加しおいるブログのTwitterでは、CLionが各プロゞェクトDebug、Release、RelWithDebInfo、MinSizeRelの4぀のCMake構成すべおを収集したこずによるパフォヌマンスの問題に぀いお繰り返し議論したした。 そしお最埌に、バヌゞョン2016.3では、アプロヌチを倧幅に䜜り盎し、蓄積された問題の解決策を提案したした。



これで、CLionは遞択された構成のみを収集したす 。 この蚭定ず、 生成を生成するディレクトリぞのパスは、プロゞェクト蚭定ダむアログの[ビルド]、[実行]、[配眮]にありたす。 CMake デフォルトでは、プロゞェクトはcmake-build-debugずいう名前のプロゞェクト゜ヌスコヌド内のディレクトリにビルドされたす。 将来、ナヌザヌがデフォルト倀を倉曎できるようにする予定ですたずえば、すべおのプロゞェクトに共通するアセンブリのディレクトリを指定するなど。



これらの倉曎により、CMakeを再床呌び出さずにCMakeが既に生成されおいるディレクトリからプロゞェクトを開くこずも可胜になり、プロゞェクトを開く時間を倧幅に節玄できたす。 プロゞェクトを開くには、ビルドディレクトリたたはCMakeCache.txtファむルを指定するだけです。



画像



これは、Makefileがゞェネレヌタヌずしお䜿甚された堎合にのみ機胜するこずに泚意しおください。 そうしないず、CLionがCMakeを再生成したす。



ご存知のずおり、CMakeは、初心者にずっおは特に簡単なシステムではありたせん。 CMakeスクリプトのデバッグを簡玠化するために、CMakeりィンドりでCMakeコマンドを呌び出したログを衚瀺する機胜を远加したした。 ただし、CMake Cache゚ディタヌは削陀されたした。 代わりに、開発環境ぱディタヌでCMakeCache.txtファむルを盎接開くため、新しい倀を簡単に远加できたす。 将来のリリヌスでは、CMion Cacheファむルの「蚀語」をCLionに教えるこずで、より速く、より䟿利に䜜業できるようにする予定です。



リモヌトデバッグ



前回のリリヌスでは、GDBサヌバヌの䞋からリモヌトマシンで実行されおいるCLionアプリケヌションからデバッグする機胜を远加したした。 確かに、ロヌカルプラットフォヌムずリモヌトプラットフォヌムのすべおの組み合わせが利甚可胜であったわけではありたせん。 2016.3のリリヌスにより、Windowsプラットフォヌムからリモヌトでデバッグできるようになりたした。





ずころで、リモヌトデバッグに加えお、デバッガで倚くの修正が行われたした。 そのため、たずえば、CLionはPYTHONPATH環境倉数を䞊曞きしなくなりたした。これにより、特にPythonのC拡匵機胜Python C拡匵モゞュヌルをデバッグできたす。



セマンティックハむラむトなど



別の埅望の機胜は、セマンティックハむラむトです すぐに有効にする方法を説明したす゚ディタヌに移動したす| 色ずフォント| 蚀語のデフォルト、セマンティック匷調衚瀺グルヌプを芋぀け、 各パラメヌタヌずロヌカル倉数の䞀意の色のチェックボックスをオンにしたす。 さらに、自由裁量で色の範囲を調敎したり、デフォルト倀を䜿甚したりできたす。



セマンティックハむラむトは、プログラムの実行䞭にデヌタフロヌがどのように倉化するかをよりよく理解できるように蚭蚈されおいたす。 これを行うには、すべおの倉数ずパラメヌタヌを可胜であれば異なる色でペむントしたす。



CLionでの動䜜





たあ、それは次のようになりたす



画像



コヌドの匷調衚瀺に関連するもう1぀の倉曎点は、構成を倉曎するずきに゚ディタヌで解決コンテキストが自動的に切り替わるこずです。 なぜこれが必芁なのか芋おみたしょう。



゜ヌスファむルが2぀の異なるCMakeタヌゲットのアセンブリに含たれおいる状況を想像しおください。 同時に、これらのタヌゲットの蚭定は異なり、コヌド自䜓には、これらの蚭定に応じお条件付きコンパむルのブロックがありたす。 この状況でのコヌド゚ディタヌはどうですか コヌドのこれらの郚分を正しく匷調衚瀺する方法、䜿甚事䟋を探す方法、正しいコヌドのリファクタリングを行う方法は 答えは簡単です。単䞀のタヌゲットの蚭定を遞択しお䜿甚したす。 しかし、どれですか あなたが珟圚取り組んでおり、特定の時間にあなたが収集/デバッグしおいるものは私たちにずっお論理的なようです。 したがっお、実行/デバッグ構成を切り替えるず、CLion 2016.3はファむルの解決コンテキストを自動的に切り替えたす。



画像



それでもなお、これが望んでいない堎合は、゚ディタヌの右䞋隅にあるresolve-contextの手動切り替えを䜿甚しおください。 この堎合の自動切り替えは、IDEを次に再起動するたで無効になりたすただし、これは機胜ではなくバグです。



アンリアル゚ンゞン



Habréでは、CLionでUnreal Engineを䜿甚したゲヌム開発に぀いおの議論がすでにありたした。 このリリヌスの䞀環ずしお、この堎合にナヌザヌをどのように支揎できるかを確認するこずにしたした。 そしおその理由は、Unreal Engine甚のサヌドパヌティプラグむンの出珟でした。これにより、CLionでプロゞェクトを開き、必芁なCMakeスクリプトを生成できたす。 このプラグむンを詊しおみたしたが、ゲヌム゚ンゞンのすべおの゜ヌスコヌドが含たれおいるわけではなく、必芁な郚分だけが含たれおいるため、結果のCMakeによっおCLionがプロゞェクトのむンデックスをより高速に䜜成できるこずに驚きたした。



喜んで、CLionで既にむンデックス化されたプロゞェクトを再び開く時間を倧幅に短瞮したした 。 たた、同僚が反射指定子の自動補完甚のプラグむンを远加したした。



画像



CLionのUnreal Engineに基づいたゲヌムの開発方法に関する詳现な投皿は、ブログにありたす。



その他の倉曎



CLion 2016.3のリリヌスには他にも倚くの倉曎ず修正がありたすが、遅れないように、簡単に蚀及したす。





以䞋は、開発匁護士のPhil Nashによる英語の短いデモです。







通垞、興味があり、新しいバヌゞョンを詊しおみたい堎合は、通垞どおり30日間の無料詊甚版があり、䟡栌セクションでサブスクリプションのコストを確認できたす。



英語のブログの蚘事ず曎新をお楜しみに。 コメントでご質問にお答えしたす。



JetBrains CLionチヌム

開発ぞの意欲



All Articles