게시판테트리스 MoE 매크로 정책: 네 전문가로 착수 고르기예제 소스

예제 소스

테트리스 MoE 매크로 정책: 네 전문가로 착수 고르기 · 파일 31개

CMakeLists.txt

cmake_minimum_required(VERSION 3.16)
project(tetris_rl LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

# Build options
option(BUILD_QT_APP "Build Qt GUI executable" ON)
option(BUILD_PY_BRIDGE "Build C API shared library for Python" ON)

# macOS Homebrew: Qt6가 CMAKE_PREFIX_PATH에 없을 때 흔한 경로를 시도합니다.
# Qt가 없으면 여전히 실패하므로 `brew install qt@6` 가 필요합니다.
if(APPLE)
    foreach(_brew_qt IN ITEMS /opt/homebrew/opt/qt@6 /usr/local/opt/qt@6)
        if(EXISTS "${_brew_qt}/lib/cmake/Qt6/Qt6Config.cmake")
            list(PREPEND CMAKE_PREFIX_PATH "${_brew_qt}")
            break()
        endif()
    endforeach()
endif()

find_package(Qt6 QUIET COMPONENTS Core Gui Widgets)
find_package(Qt6 QUIET COMPONENTS Network)

add_library(tetris_engine STATIC
    src/tetris_engine.cpp
)
target_include_directories(tetris_engine PUBLIC src)

if(BUILD_PY_BRIDGE)
    add_library(tetris_c_api SHARED
        src/tetris_c_api.cpp
    )
    target_link_libraries(tetris_c_api PRIVATE tetris_engine)
    target_include_directories(tetris_c_api PRIVATE src)
    set_target_properties(tetris_c_api PROPERTIES OUTPUT_NAME "tetris_c_api")
endif()

if(BUILD_QT_APP)
    if(NOT Qt6_FOUND)
        message(WARNING
            "Qt6를 찾지 못했습니다. GUI 앱(tetris_rl)은 빌드하지 않습니다.\n"
            "필요하면 설치: brew install qt@6\n"
            "구성: cmake -S . -B build -DCMAKE_PREFIX_PATH=\"$(brew --prefix qt@6)\"")
    else()
        add_executable(tetris_rl
            src/main.cpp
            src/tetris_widget.cpp
            src/main_window.cpp
        )
        target_link_libraries(tetris_rl PRIVATE tetris_engine Qt6::Core Qt6::Gui Qt6::Widgets Qt6::Network)
        target_include_directories(tetris_rl PRIVATE src)
    endif()
endif()