私は現在 https://marketplace.visualstudio.com/items?itemName=mitaki28.vscode-clang を使用しています。これは、メンバー関数にアクセスするための素敵な小さなツールとして最適です。
ただし、インポートするプロジェクトで1つの問題が発生しています。上記のclang機能は動作しますが、インクルードディレクトリの使用に特に問題があります。私のプロジェクト構造は次のとおりです。
|- src/
|- main.cpp
|- include/
|- MyHelper.h
|- CMakeLists.txt
Visual Studio Codeのインクルードディレクトリを構成して、main.cpp
で#include "MyHelper.h"
の代わりに#include "include/MyHelper.h"?
を実行する方法はありますか?
エディターでは、ファイルが見つからないことを示す私のincludeステートメントが強調表示されます。エディターは大した問題ではありませんが(私のプロジェクトはコンパイルされます)、次の問題はファイルが表示されないためvscode-clangプラグインが機能しないことです。
おそらく、必要なインクルードのためにエディターのCMakeLists.txtからの設定を使用することもできますか?
ありがとう!
さて、これは愚かでしたが、誰かがVisual Studio Code
と簡単なプロジェクトを持っていません。これらの手順は、clangコンパイラを使用していることを前提としています。
.vscode/settings.json
JSONオブジェクト内で以下の行を構成します。
// Compiler options for C++ (e.g. ['-std=c++11'])
"clang.cxxflags": [
"-I/path/to/my/include/directory" // header files
],
CMakeを使用している場合、VSCodeにはプロジェクトの構築に役立つCMakeプラグインがあります。したがって、settings.jsonを変更する必要はありません。ただ使用する:
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/include")
または、そのフォルダー内のヘッダーファイルを使用する他のモジュールがない場合は、次のようなものを使用できます。
target_include_directories(MyHelper, "${CMAKE_CURRENT_SOURCE_DIR}/include")
プロジェクトが正常にビルドされる必要があるだけの場合。それはすべての話です。
その場合、#includeステートメントの下に小さなジグザグの小さな線が表示され、目を痛めます。 c_cpp_properties.jsonを生成する必要があります。これは、コンパイラがコードをビルドするのを助けることとは関係ありませんが、VSCodeインテリセンスがライブラリとヘッダーファイルの存在を実現するのを助けることとは関係ありません。また、CMakeLists.txtにCMakeオプションを追加することで、CMakeを活用できます。
add_definitions(-DCMAKE_EXPORT_COMPILE_COMMANDS=ON)
CMakeはファイルを生成しますcompile_commands.json
ビルドディレクトリの下。 VSCodeはJsonファイルを解析し、そのファイルの内容に基づいてインクルードパスを見つけることができます。したがって、必要なことは、VSCodeにJsonファイルの場所を通知することだけです。これを行うには、c_cpp_properties.jsonに次の行を追加します。
"configurations": [
{
"name": "Mac",
"compileCommands": "${workspaceFolder}/build/compile_commands.json",
...
}],
プロジェクトを再構築すると、VSCodeインテリセンスがすべての必要なパスを検出できるようになります。
[環境]
Ubuntu:16.04.3
VSCode:1.23.1
VSCodeプラグイン:C/C++ 0.17.0、CMAKE 0.0.17、CMakeTools 0.11.1