SFML не официально не поддерживает модули (даже если есть активный запрос на вытягивание, чтобы добавить его, за исключением для GCC) < /li>
Внутренне, в том числе через глобальный фрагмент модуля все, что мне нужно, от SFML и STD (вероятно, рассмотрение предварительных заголовков, если начнутся начнутся слишком долго).
Я настраиваю проект, и через некоторое время я застрял, пытаясь использовать SF :: font и SFML -класс, который использует STD: string , со строительностью для строительства, потому что сборы ofcc ye of obsc ofcc ye of std std std: string , со строительством rcc, потому что сборы. Например: < /p>
Код: Выделить всё
[build] C:/.../bin/ld.exe: CMakeFiles/.../src/Game.cpp.obj: in function `std::__cxx11::basic_string::_Alloc_hider::~_Alloc_hider()':
[build] C:/.../lib/gcc/x86_64-w64-mingw32/14.2.0/include/c++/bits/basic_string.h:186: multiple definition of `std::__cxx11::basic_string::_Alloc_hider::~_Alloc_hider()'; CMakeFiles/.../src/main.cpp.obj:C:/.../lib/gcc/x86_64-w64-mingw32/14.2.0/include/c++/bits/basic_string.h:186: first defined here
< /code>
Минимальный пример, который я смог сражаться: < /p>
main.cpp
import Game;
int main()
{
Game game;
game.run();
}
< /code>
game.ixx
module;
#include
export module Game;
export class Game
{
public:
Game();
void run();
private:
sf::RenderWindow m_window;
sf::Font m_font;
};
< /code>
game.cpp
module;
#include
module Game;
Game::Game() : m_window(sf::VideoMode({1920u, 1080u}), "My Game"), m_font("Sansation.tff")
{
}
void Game::run()
{
}
my cmakelists.txt просто:
Код: Выделить всё
set(CMAKE_CXX_STANDARD 20)
project(MyGame LANGUAGES CXX)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(FETCHCONTENT_FULLY_DISCONNECTED ON)
include(FetchContent)
FetchContent_Declare(SFML
GIT_REPOSITORY https://github.com/SFML/SFML.git
GIT_TAG 3.0.1
GIT_SHALLOW ON
EXCLUDE_FROM_ALL
SYSTEM)
FetchContent_MakeAvailable(SFML)
file(GLOB_RECURSE MODULE_INTERFACE_FILES CONFIGURE_DEPENDS "src/*.ixx")
file(GLOB_RECURSE MODULE_IMPLEMENTATION_FILES CONFIGURE_DEPENDS "src/*.cpp")
add_executable(${PROJECT_NAME})
target_sources(${PROJECT_NAME}
PUBLIC src/main.cpp)
target_sources(${PROJECT_NAME}
PUBLIC
FILE_SET cxx_modules TYPE CXX_MODULES
FILES ${MODULE_INTERFACE_FILES} PRIVATE ${MODULE_IMPLEMENTATION_FILES}
)
target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_20)
target_link_libraries(${PROJECT_NAME} PRIVATE SFML::Graphics)
< /code>
Я понятия не имею, как решить это. При значениях лица это кажется ошибкой в том, как определяется std :: string Подробнее здесь: https://stackoverflow.com/questions/796 ... e-fragment
Мобильная версия