Ссылка на неразрешённый внешний символ C++ SFML

Пытаюсь написать графическое приложение с использованием библиотеки SFML C++, сборщик - CMake, ОС - Windows, компилятор - cl, версия SFML - 2.6.1

Сгенерировал кэш - всё хорошо, запускаю сборку через "cmake --build .", выдаёт ошибку:

main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: void __cdecl ArtObjects::NewArtO::L_draw(class sf::RectangleShape &,class sf::RenderWindow &)" (?L_draw@NewArtO@ArtObjects@@ QEAAXAEAVRectangleShape@sf@@AEAVRenderWindow@4@@Z) в функции main. [C:\Users\user\Programming\Cpp\testtitcuwn\LetterDraw\build\LetterDraw.vcxproj] C:\Users\user\Programming\Cpp\testtitcuwn\LetterDraw\build\Debug\LetterDraw.exe : fatal error LNK1120: неразрешенных внешних элементов: 1 [C:\Users\user\Programming\Cpp\testtitcuwn\LetterDraw\build
LetterDraw.vcxproj]

проблемная часть кода:

main.cpp:

l_letter.L_draw(rectangle, window);

ObjectsX.cpp:

void L_draw(sf::RectangleShape& rectangle, sf::RenderWindow& window){
        
        rectangle.setSize(size);
        rectangle.setFillColor(sf::Color::Black);
        rectangle.setPosition(xy_pos);
        window.draw(rectangle);

        rectangle.setPosition({ xOffsetRight(rectangle) });
        window.draw(rectangle);

        rectangle.setPosition({ yOffsetDown(rectangle) });
        window.draw(rectangle);

        rectangle.setPosition({ yOffsetDown(rectangle) });
        window.draw(rectangle); 
        
}

Полный исходный код:

ObjectsX.cpp:

#include "ObjectsX.hpp"


                 //x y                //rect size x y,   //with(out) outline
ArtObjects::NewArtO::NewArtO(sf::Vector2f xy_pos, sf::Vector2f size, bool outline) : xy_pos(xy_pos), size(size), outline(outline)
{


}

class NewArtO {
    
protected:
    sf::Vector2f xy_pos;
    sf::Vector2f size;
    bool outline;
    
public:
    void L_draw(sf::RectangleShape& rectangle, sf::RenderWindow& window){
        
        rectangle.setSize(size);
        rectangle.setFillColor(sf::Color::Black);
        rectangle.setPosition(xy_pos);
        window.draw(rectangle);

        rectangle.setPosition({ xOffsetRight(rectangle) });
        window.draw(rectangle);

        rectangle.setPosition({ yOffsetDown(rectangle) });
        window.draw(rectangle);

        rectangle.setPosition({ yOffsetDown(rectangle) });
        window.draw(rectangle);
    
        
        
    }

    


};

ObjectsX.hpp:

#pragma once
#include <SFML/Graphics.hpp>
#include <vector>
//---------------------------------------------------
#define pos_x(object) ( object.getPosition().x )
#define pos_y(object) ( object.getPosition().y )
#define size_x(object) ( object.getSize().x )
#define size_y(object) ( object.getSize().y )

//number shift right along the abscissa axis
#define xOffsetRight(object)  \
pos_x(object) + size_x(object)\
,                             \
pos_y(object) + 0             \
//number shift left along the abscissa axis
#define xOffsetLeft(object)   \
pos_x(object) - size_x(object)\
,                             \
pos_y(object) + 0             \
//number shift up along the ordinate axis
#define yOffsetUp(object)     \
pos_x(object) + 0             \
,                             \
pos_y + size_y                \
//number shift down along the ordinate axis
#define yOffsetDown(object)   \
pos_x(object) + 0             \
,                             \
pos_y(object) - size_y(object)\
//---------------------------------------------------


namespace ArtObjects {
/*
* ���� ����� ������ ����� :
* ���������� ����������� ����� ����������� �������
* ����� ����� ��������� ������������ ������������ ��������� � ���������� ��������� �������� ����� ������
*/
class NewArtO {
//���������� ������� � �������������
public:
    NewArtO(sf::Vector2f xy_pos, sf::Vector2f size, bool outline);
    //����� ��������� ����� "L"
    void L_draw(sf::RectangleShape& rectangle, sf::RenderWindow& window);
protected:
    sf::Vector2f xy_pos;
    sf::Vector2f size;
    bool outline;
};
}

main.hpp:

#pragma once
#include <SFML/Graphics.hpp>
#include "ObjectsX.hpp"
#include <iostream>
#include <Windows.h>

main.cpp:

#include "main.hpp"

#if _DEBUG
int main() {
#else
int WinMain() {
#endif
    sf::RenderWindow window(sf::VideoMode(800, 700, 32U), "SFMLTutorial");

    sf::RectangleShape rectangle;
    ArtObjects::NewArtO l_letter(
        { 0.f,0.f }, 
        { 100.f, 100.f },
        false
);

    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed) {
                window.close();
            }
        }

        window.clear(sf::Color::White);

        l_letter.L_draw(rectangle, window);

        window.display();
    }
    return 0;
}

Искал в интернете эту ошибку, где-то видел, что нужно добавить символ "&", чтобы избежать лишних копирок. Как видно из исходного кода, который я прикрепил - добавил, а ошибка никуда не исчезла "void L_draw(sf::RectangleShape& rectangle, sf::RenderWindow& window){"


Ответы (0 шт):