<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="/feed.xml" rel="self" type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" /><updated>2026-02-27T07:59:58+00:00</updated><id>/feed.xml</id><title type="html">Коблог</title><entry><title type="html">diff-forms</title><link href="/2025/08/28/diff-forms.html" rel="alternate" type="text/html" title="diff-forms" /><published>2025-08-28T00:00:00+00:00</published><updated>2025-08-28T00:00:00+00:00</updated><id>/2025/08/28/diff-forms</id><content type="html" xml:base="/2025/08/28/diff-forms.html"><![CDATA[<p>#Дифференциальные формы
$\Omega \wedge \Omega$</p>]]></content><author><name></name></author><summary type="html"><![CDATA[#Дифференциальные формы $\Omega \wedge \Omega$]]></summary></entry><entry><title type="html">Подключение библиотеки SFML</title><link href="/2025/02/23/first.html" rel="alternate" type="text/html" title="Подключение библиотеки SFML" /><published>2025-02-23T00:00:00+00:00</published><updated>2025-02-23T00:00:00+00:00</updated><id>/2025/02/23/first</id><content type="html" xml:base="/2025/02/23/first.html"><![CDATA[<p>Есть несколько способов подключить библиотеку в C++ мы рассмотрим два, подходящие для Visual Studio:</p>
<ul>
  <li>Через CMake создать проект Visual Studio</li>
  <li>Используя CMake Project в Visual Studio</li>
</ul>

<p>Прежде, чем начать установить на ваш ПК CMake. Пройдите на сайт
<a href="https://cmake.org/download/">CMake</a> и выберете подходящую под вашу ОС версию. Проверить наличие программы можно командой:</p>

<figure class="highlight"><pre><code class="language-bush" data-lang="bush">cmake -version</code></pre></figure>

<h1 id="первый-способ">Первый способ</h1>
<p>Чтобы создать проект Visual Studio создаем в папке файл CMakeLists.txt со следующим
содержимым:</p>

<figure class="highlight"><pre><code class="language-bush" data-lang="bush">cmake_minimum_required(VERSION 3.5...4.0)
project(CMakeSFMLProject LANGUAGES CXX)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
include(FetchContent)
FetchContent_Declare(SFML
    GIT_REPOSITORY https://github.com/SFML/SFML.git
    GIT_TAG 3.0.0
    GIT_SHALLOW ON
    EXCLUDE_FROM_ALL
    SYSTEM)
FetchContent_MakeAvailable(SFML)
add_executable(main src/main.cpp)
target_compile_features(main PRIVATE cxx_std_17)
target_link_libraries(main PRIVATE SFML::Graphics)</code></pre></figure>

<p>Также в папке вашего проекта добавьте папку src и поместите в неё файл main.cpp со следующим кодом:</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="cp">#include</span> <span class="cpf">&lt;SFML/Graphics.hpp&gt;</span><span class="cp">
</span>
<span class="kt">int</span> <span class="nf">main</span><span class="p">()</span>
<span class="p">{</span>
    <span class="c1">// create the window</span>
    <span class="n">sf</span><span class="o">::</span><span class="n">RenderWindow</span> <span class="n">window</span><span class="p">(</span><span class="n">sf</span><span class="o">::</span><span class="n">VideoMode</span><span class="p">({</span> <span class="mi">800</span><span class="p">,</span> <span class="mi">600</span> <span class="p">}),</span> <span class="s">"My window"</span><span class="p">);</span>

    <span class="c1">// run the program as long as the window is open</span>
    <span class="k">while</span> <span class="p">(</span><span class="n">window</span><span class="p">.</span><span class="n">isOpen</span><span class="p">())</span>
    <span class="p">{</span>
        <span class="n">sf</span><span class="o">::</span><span class="n">CircleShape</span> <span class="n">shape</span><span class="p">(</span><span class="mf">50.</span><span class="n">f</span><span class="p">);</span>
        <span class="n">sf</span><span class="o">::</span><span class="n">Vector2f</span> <span class="n">initpos</span><span class="p">{</span><span class="mf">25.</span><span class="n">f</span><span class="p">,</span><span class="mf">25.</span><span class="n">f</span><span class="p">};</span>
        <span class="n">shape</span><span class="p">.</span><span class="n">setPosition</span><span class="p">(</span><span class="n">initpos</span><span class="p">);</span>
        <span class="c1">// set the shape color to green</span>
        <span class="n">shape</span><span class="p">.</span><span class="n">setFillColor</span><span class="p">(</span><span class="n">sf</span><span class="o">::</span><span class="n">Color</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span> <span class="mi">250</span><span class="p">,</span> <span class="mi">50</span><span class="p">));</span>

        <span class="c1">// check all the window's events that were triggered since the last iteration of the loop</span>
        <span class="k">while</span> <span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">optional</span> <span class="n">event</span> <span class="o">=</span> <span class="n">window</span><span class="p">.</span><span class="n">pollEvent</span><span class="p">())</span>
        <span class="p">{</span>
            <span class="n">window</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
            <span class="c1">// "close requested" event: we close the window</span>
            <span class="k">if</span> <span class="p">(</span><span class="n">event</span><span class="o">-&gt;</span><span class="n">is</span><span class="o">&lt;</span><span class="n">sf</span><span class="o">::</span><span class="n">Event</span><span class="o">::</span><span class="n">Closed</span><span class="o">&gt;</span><span class="p">())</span>
                <span class="n">window</span><span class="p">.</span><span class="n">close</span><span class="p">();</span>
            <span class="n">shape</span><span class="p">.</span><span class="n">setPosition</span><span class="p">((</span><span class="n">sf</span><span class="o">::</span><span class="n">Vector2f</span><span class="p">)</span><span class="n">sf</span><span class="o">::</span><span class="n">Mouse</span><span class="o">::</span><span class="n">getPosition</span><span class="p">(</span><span class="n">window</span><span class="p">));</span>
            <span class="n">window</span><span class="p">.</span><span class="n">draw</span><span class="p">(</span><span class="n">shape</span><span class="p">);</span>
            
        <span class="p">}</span>

        <span class="c1">// clear the window with black color</span>

        <span class="c1">// end the current frame</span>
        <span class="n">window</span><span class="p">.</span><span class="n">display</span><span class="p">();</span>
    <span class="p">}</span>
<span class="p">}</span></code></pre></figure>

<p>Порядок действий для создания проекта:</p>
<ul>
  <li>Прописываем в консоли следующую команду</li>
</ul>

<figure class="highlight"><pre><code class="language-bush" data-lang="bush"> cmake . -G "Visual Studio 17 2022" -B .build -DCMAKE_POLICY_VERSION_MINIMUM=3.5 </code></pre></figure>

<ul>
  <li>После создания проекта находим в папке .build находим файл .sln и открываем его с помощью Visual Studio.</li>
  <li>Компилируем проект. При попытке его запустить может возникнуть ошибка в отказе к доступу, решаем её следующим способом. Открываем свойства в проекта кликая правой кнопкой мыши по нему
<img src="/assets/cmake/img/1.png" alt="Image" style="display: block; margin: 0 auto" /> 
<img src="/assets/cmake/img/2.png" alt="Image" style="display: block; margin: 0 auto" /> 
<img src="/assets/cmake/img/3.png" alt="Image" style="display: block; margin: 0 auto" /> 
Теперь заново запускаем проект и вы должны увидеть окно SFML, а также кружок, который двигается за курсором.</li>
</ul>

<h1 id="второй-способ">Второй способ</h1>
<p>Здесь мы создадим проект уже в самом редакторе Visual Studio. Для начала убедимся, что мы скачали CMake для него, поэтому мы перейдем 
к установщику VisualStudioSetup.exe и перейдем ко вкладке “Отдельные компоненты” и выбираем средства CMake для C++. После того, как мы 
убедились в создайте проект CMake в Visual Studio.</p>

<figure class="highlight"><pre><code class="language-bush" data-lang="bush"># CMakeList.txt: файл проекта CMake верхнего уровня; проведите глобальную конфигурацию
# и включите сюда подпроекты.
cmake_minimum_required (VERSION 3.8)

# Включение горячей перезагрузки для компиляторов MSVC, если поддерживается.
if (POLICY CMP0141)
  cmake_policy(SET CMP0141 NEW)
  set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$&lt;IF:$&lt;AND:$&lt;C_COMPILER_ID:MSVC&gt;,$&lt;CXX_COMPILER_ID:MSVC&gt;&gt;,$&lt;$&lt;CONFIG:Debug,RelWithDebInfo&gt;:EditAndContinue&gt;,$&lt;$&lt;CONFIG:Debug,RelWithDebInfo&gt;:ProgramDatabase&gt;&gt;")
endif()

project ("SiteExample")

# Включите подпроекты.
add_subdirectory ("SiteExample")</code></pre></figure>

<p>Можно убрать строчку add_subdirectory (“SiteExample”) и добавить вместо неё</p>

<figure class="highlight"><pre><code class="language-bush" data-lang="bush">set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)

include(FetchContent)
FetchContent_Declare(SFML
    GIT_REPOSITORY https://github.com/SFML/SFML.git
    GIT_TAG 3.0.0
    GIT_SHALLOW ON
    EXCLUDE_FROM_ALL
    SYSTEM)
FetchContent_MakeAvailable(SFML)

add_executable(main src/main.cpp)
target_compile_features(main PRIVATE cxx_std_17)
target_link_libraries(main PRIVATE SFML::Graphics)</code></pre></figure>

<p>Также создаем в папке проекта src/main.cpp с таким же содержимым как в прошлом пункте.
После чего собираем с помощью CMake нашу сборку и запускаем её.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[Есть несколько способов подключить библиотеку в C++ мы рассмотрим два, подходящие для Visual Studio: Через CMake создать проект Visual Studio Используя CMake Project в Visual Studio]]></summary></entry></feed>