GNU/Linux >> Linux の 問題 >  >> Linux

VS Code は、複数の .ccp ソース ファイルを使用して C++ プログラムをビルドしません。

怠け者、

tasks.json です 複数の cpp ファイルをコンパイルするための、Linux ディストリビューション用の vscode の。

{
"version": "2.0.0",
"tasks": [
    {
        "type": "shell",
        "label": "C/C++: g++ build active file",
        "command": "/usr/bin/g++",
        "args": [
            "-g",
            "${fileDirname}/*.cpp",
            "-o",
            "${fileDirname}/${fileBasenameNoExtension}"
        ],
        "options": {
            "cwd": "/usr/bin"
        },
        "problemMatcher": [
            "$gcc"
        ],
        "group": {
            "kind": "build",
            "isDefault": true
        }
    }
]
}

これは、同じ問題に対する Windows の回答です:

https://code.visualstudio.com/docs/cpp/config-mingw で次の回答が見つかるまで、これにも苦労していました:

<ブロック引用>

"${workspaceFolder}\\*.cpp" のような引数を使用して、複数の C++ ファイルをビルドするように tasks.json を変更できます。 ${file} の代わりに .これにより、現在のフォルダー内のすべての .cpp ファイルがビルドされます。 "${fileDirname}\\${fileBasenameNoExtension}.exe" を置き換えることで、出力ファイル名を変更することもできます ハードコードされたファイル名 (例:"${workspaceFolder}\\myProgram.exe" ).

WorkspaceFolder の F は大文字であることに注意してください。

例として、私のプロジェクトの tasks.json ファイルでは、"args" の下の括弧内のテキストは、最初は次のように表示されていました:

"-g",
  "${file}",
  "-o",
  "${fileDirname}\\${fileBasenameNoExtension}.exe"

これにより、両方のファイルではなく 1 つのみがコンパイルされたため、参照エラーが発生しました。

ただし、そのテキストを次のように変更した後、プログラムを動作させることができました:

"-g",
"${workspaceFolder}\\*.cpp",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"

tasks.json:

        "label": "g++.exe build active file",
        "args": [
            "-g",
            "${fileDirname}\\**.cpp",
            //"${fileDirname}\\**.h",
            "-o",
            "${fileDirname}\\${fileBasenameNoExtension}.exe",
        ],

launch.json:

"preLaunchTask": "g++.exe build active file"

ソースが別のフォルダーにある場合に機能します


複数のファイルがあり、そのうちの 1 つが cpp に依存している場合 別のファイルの場合、リンカーがそれを見つけることができるように、g++ にもそれをコンパイルするように指示する必要があります。最も簡単な方法は次のとおりです:

$ g++ Cat.cpp main.cpp -o Classes


Linux
  1. Netstatのソースコード?

  2. LinuxでC++ IDEに苦労しています

  3. C++ アプリケーションが 143 終了コードで終了する - どういう意味ですか?

  1. Ventoy:複数のISOファイルを使用してマルチブートUSBドライブを作成する方法

  2. タイムゾーンが異なるファイルで find -mtime が期待どおりに機能しないのはなぜですか?

  3. Ansible を使用してリモート マシンからローカルに複数のファイルをフェッチする方法

  1. CloudCross –ファイルとディレクトリを複数のクラウドストレージと同期する

  2. ソース ファイルが異なるディレクトリにある Makefile

  3. c/c++ ソースコードのコメントのスペルをチェックする Linux ツール