CLion build报错undefined reference to function

main.cpp

#include <iostream>
#include "SALES.h"
using namespace std;

int main() {
    using namespace SALES;
    struct Sales a,b;
    double darr[4]={1.0,2.0,3.0,4.0};
    SALES::setSales(a);
    SALES::setSales(b,darr,3);
    cout<<"a for:"<<endl;
    SALES::showSales(a);
    cout<<"b for:"<<endl;
    SALES::showSales(b);
}

test.cpp

#include <iostream>
#include "SALES.h"
using namespace SALES;
using namespace std;
void setSales(Sales & s,const double arr[],int n)
{
    if(n>4)
    {
        for(int i = 0;i<4;i++)
        {
            s.sales[i] = arr[i];
        }
    }else{
        for(int i = 0;i<n;i++)
        {
            s.sales[i] = arr[i];
        }
        for(int i = n;i<4;i++)
        {
            s.sales[i] = 0;
        }
    }
    double avr=0;
    for(int i = 0;i<4;i++)
    {
        avr += s.sales[i];
    }
    s.average=(avr)/4;
    double max = s.sales[0];
    for(int i = 0;i<4;i++)
    {
        if(max<s.sales[i])
        {
            max = s.sales[i];
        }
    }
    s.max = max;
    double min = s.sales[0];
    for(double sale : s.sales)
    {
        if(min>sale)
        {
            min = sale;
        }
    }
    s.min = min;

}
void setSales(Sales & s)
{
    cout << "请输入四季度的销售数据!"<<endl;
    cout << "第一季度:";
    cin >>s.sales[0];
    cout << "第二季度:";
    cin >>s.sales[1];
    cout << "第三季度:";
    cin >>s.sales[2];
    cout << "第四季度:";
    cin >>s.sales[3];
    double avr=0;
    for(int i = 0;i<4;i++)
    {
        avr += s.sales[i];
    }
    s.average=(avr)/4;
    double max = s.sales[0];
    for(int i = 0;i<4;i++)
    {
        if(max<s.sales[i])
        {
            max = s.sales[i];
        }
    }
    s.max = max;
    double min = s.sales[0];
    for(int i = 0;i<4;i++)
    {
        if(min>s.sales[i])
        {
            min = s.sales[i];
        }
    }
    s.min = min;
}
void showSales(const Sales & s)
{
    cout<<"四季度的销售数据分别为:"<<endl;
    cout<<"Season 1:"<<s.sales[0]<<endl;
    cout<<"Season 2:"<<s.sales[1]<<endl;
    cout<<"Season 3:"<<s.sales[2]<<endl;
    cout<<"Season 4:"<<s.sales[3]<<endl;
    cout<<"平均销售数据:"<<s.average<<endl;
    cout<<"最低销售数据:"<<s.min<<endl;
    cout<<"最好销售数据:"<<s.max<<endl;

}

头文件


#ifndef UNTITLED2_SALES_H
#define UNTITLED2_SALES_H
namespace SALES
{
    const int quarters = 4;
    struct Sales
    {
        double sales[quarters];
        double average;
        double max;
        double min;
    };
    void setSales(Sales & s,const double[],int n);
    void setSales(Sales & s);
    void showSales(const Sales & s);
}
#endif //UNTITLED2_SALES_H

附上CMake

cmake_minimum_required(VERSION 3.19)
project(untitled2)

set(CMAKE_CXX_STANDARD 11)

add_executable(untitled2 main.cpp test.cpp SALES.h ttest.h)

build就提示
undefined reference to SALES::setSales(SALES::Sales&)' untitled2/main.cpp:10: undefined reference toSALES::setSales(SALES::Sales&, double const*, int)'
untitled2/main.cpp:12: undefined reference to SALES::showSales(SALES::Sales const&)' untitled2/main.cpp:14: undefined reference toSALES::showSales(SALES::Sales const&)'
我认为应该是cmake里的问题,但是不知道该如何解决

void setSales(Sales & s,const double arr[],int n)是不是要带上命名空间呢
void SALES::setSales(Sales & s,const double arr[],int n)