GNU/Linux >> Belajar Linux >  >> Linux

VS Code tidak akan membangun program c++ dengan beberapa file sumber .ccp

merasa malas,

Ini adalah tasks.json dari vscode untuk distro linux, untuk mengkompilasi beberapa file cpp.

{
"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
        }
    }
]
}

Ini adalah jawaban Windows untuk masalah yang sama:

Saya juga berjuang dengan ini sampai saya menemukan jawaban berikut di https://code.visualstudio.com/docs/cpp/config-mingw :

Anda dapat memodifikasi task.json untuk membuat beberapa file C++ dengan menggunakan argumen seperti "${workspaceFolder}\\*.cpp" bukannya ${file} . Ini akan membangun semua file .cpp di> folder Anda saat ini. Anda juga dapat memodifikasi nama file keluaran dengan mengganti "${fileDirname}\\${fileBasenameNoExtension}.exe" dengan nama file hard-coded (untuk>contoh "${workspaceFolder}\\myProgram.exe" ).

Perhatikan bahwa F di workspaceFolder dikapitalisasi.

Sebagai contoh, di file task.json saya di proyek saya, teks di antara tanda kurung di bawah "args" awalnya muncul sebagai berikut:

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

Ini memberi saya kesalahan referensi karena hanya mengkompilasi satu dan bukan kedua file saya.

Namun, saya dapat menjalankan program setelah mengubah teks tersebut menjadi berikut:

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

di task.json:

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

di launch.json:

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

itu akan berfungsi jika sumber Anda berada di folder terpisah


Jika Anda memiliki banyak file dan satu file bergantung pada cpp file untuk yang lain, Anda perlu memberi tahu g ++ untuk mengompilasinya juga, sehingga linker dapat menemukannya. Cara paling sederhana adalah:

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


Linux
  1. Kode Sumber Netstat?

  2. CloudCross – Menyinkronkan File dan Direktori dengan Beberapa Penyimpanan Cloud

  3. Buat file dengan file sumber di direktori berbeda

  1. Alat Linux untuk memeriksa ejaan komentar dalam kode sumber c/c++

  2. C/C++ dengan GCC:Menambahkan file sumber daya secara statis ke executable/library

  3. Bagaimana saya membuat python sendiri dari kode sumber di Ubuntu?

  1. Bisakah Clang mengkompilasi kode dengan GCC yang dikompilasi .a libs?

  2. Aplikasi C++ diakhiri dengan 143 kode keluar - apa artinya?

  3. Bagaimana distribusi yang berbeda memodifikasi lokasi file konfigurasi untuk program?