예제 소스
VLM을 이용한 테트리스 학습 · 파일 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()