Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use visual studio code to compile multi-cpp file?

I have followed some instructions to construct Visual studio code C/C++ compile and debug environment.But g++ compiler can only compile the selected cpp file, so the included .h file associated the cpp file can not compiled. then the terminal shows 'Undefined symbols for architecture x86_64' error. the code as below:

the a.h file

    int func();

the a.cpp file

    include <iostream>
    include "a.h"
    using namespace std;
    int func(){
        return 111;
    }

the main.cpp file

    include "a.h"
    using namespace std;
    int main()
    {
        int b = func();
        cout << b << endl;
    }

Visual studio code will use the command as below

     g++ directory/main.cpp -o directory/main.out -g -Wall -fcolor-        diagnostics -std=c++11

this command will raise 'Undefined symbols for architecture x86_64' error I can fix it with this new command

    g++ main.cpp a.cpp -o main.out.

So the problem is how to config these json files to fix the g++ compile issue. And when I want to use some libraries such as FFMpeg, how can I link the FFMpeg .h file correctly.

like image 661
Hu Gforce Avatar asked Aug 07 '18 07:08

Hu Gforce


People also ask

How do I compile multiple cpp files in VS Code?

You can modify your tasks.json to build multiple C++ files by using an argument like "${workspaceFolder}/*.cpp" instead of ${file} .This will build all .cpp files in your current folder.

Can you compile C++ in VS Code?

VS Code is first and foremost an editor, and relies on command-line tools to do much of the development workflow. The C/C++ extension does not include a C++ compiler or debugger. You will need to install these tools or use those already installed on your computer.

How do I run multiple files in VS Code?

Launch VS Code and press the “Ctrl” and “P” keys simultaneously to search for a file to open in the current project. Type in the file name. To open the new file in a temporary tab, click on it once. To open the new file in a separate window that you can choose to close manually, double-click it.

Can you have multiple cpp files in project?

Visual C++ For creating more code files to go into a project, use the "Add New Item" under the "Project" menu to add new C++ code files. An executable can consist of many files, but can have only one main() function!


2 Answers

For very simple projects you can simply pass multiple cpp files to the compiler in a single command, e.g:

g++ main.cpp a.cpp -o main.out

You can simply change your compile command in tasks.json to this value.

However as your project grows you will find this approach causes you more and more problems. I'd recommend you look into a proper build system, there are many to choose from including:

  • Make - the main standard build system on Linux but difficult to learn and fiddly
  • CMake - visual studio code has some support for cmake
  • Gyp - can generate make files
  • Scons - python like build scripts
like image 165
Alan Birtles Avatar answered Oct 03 '22 16:10

Alan Birtles


One way I have gotten it to work is by going into your build task, and instead of saying "g++ ${file}", instead you can set the target file to get compiled as "g++ ${fileDirname}/**.cpp" which will compile all the .cpp files in the directory.

This way you can use the same build task for a project where you may have multiple programs in different folders, all under the same umbrella directory.

like image 23
Michael Ross Avatar answered Oct 03 '22 14:10

Michael Ross