Home > OS >  Compiling mutiple c files with vscode on mac
Compiling mutiple c files with vscode on mac

Time:05-28

I'm fairly new to c and programming in general and was watching the free tutorial on the freecodecamp.org youtube channel and when I got up to the point where I used multiple c files, I got multiple compiler errors with g and clang.

Here is main.cpp

#include <iostream>
#include "compare.h" 



int main(){

    int maximum = max(134,156);
    std::cout << "max : " << maximum << std::endl;

    

    
    return 0;
}

This is compare.cpp:

int max( int a, int b){
    if(a>b)
        return a;
    else
        return b;
}

And the compare.h file

    int max( int a, int b);//Declaration

When I try and build with clang I get:

Undefined symbols for architecture arm64: "max(int, int)", referenced from: _main in main-e30ba6.o ld: symbol(s) not found for architecture arm64 clang-13: error: linker command failed with exit code 1 (use -v to see invocation)

When I build with g I get:

Undefined symbols for architecture arm64: "__Z3maxii", referenced from: _main in cc3V4eOt.o ld: symbol(s) not found for architecture arm64 collect2: error: ld returned 1 exit statu

I've searched all over youtube and stack overflow and the only solution I found was to link the files with

g   main.cpp compare.cpp -o main

But this only worked once and never again. Any help would be greatly appreciated thanks!

Edit

After some more research the only thing that gave me a definitive answer was to build with clang, get the error, then run:

clang main.cpp compare.cpp -o main

But I have to do this every time I make changes to the code and that just seems tedious and there has to be a better way. Also if I were to have multiple .cpp files I would have to run those into the command as well.

CodePudding user response:

You could build multiple cpp file in VScode by shortcut .

  1. Create a build task by following the enter image description here

  • Related