diff --git a/.github/workflows/cmake-multi-platform.yml b/.github/workflows/cmake-multi-platform.yml new file mode 100644 index 0000000..ee66e23 --- /dev/null +++ b/.github/workflows/cmake-multi-platform.yml @@ -0,0 +1,92 @@ +name: CMake on multiple platforms + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +jobs: + build: + runs-on: ${{ matrix.os }} + + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, windows-latest] + build_type: [Release] + c_compiler: [gcc, clang, cl] + include: + - os: windows-latest + c_compiler: cl + cpp_compiler: cl + - os: ubuntu-latest + c_compiler: gcc + cpp_compiler: g++ + - os: ubuntu-latest + c_compiler: clang + cpp_compiler: clang++ + exclude: + - os: windows-latest + c_compiler: gcc + - os: windows-latest + c_compiler: clang + - os: ubuntu-latest + c_compiler: cl + + steps: + - uses: actions/checkout@v4 + + - name: Set reusable strings + id: strings + shell: bash + run: | + echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT" + + - name: Install dependencies (Ubuntu only) + if: matrix.os == 'ubuntu-latest' + run: | + sudo apt-get update + sudo apt-get install -y software-properties-common + sudo add-apt-repository universe + sudo apt-get update + sudo apt-get install -y \ + libasound2-dev \ + libx11-dev \ + libxrandr-dev \ + libxi-dev \ + libgl1-mesa-dev \ + libglu1-mesa-dev \ + libxcursor-dev \ + libxinerama-dev \ + libwayland-dev \ + libxkbcommon-dev + + - name: Search for packages (Ubuntu only) + if: matrix.os == 'ubuntu-latest' + run: | + apt-cache search libasound + apt-cache search libx11 + apt-cache search libxrandr + apt-cache search libxi + apt-cache search libgl1-mesa + apt-cache search libglu1-mesa + apt-cache search libxcursor + apt-cache search libxinerama + apt-cache search libwayland + apt-cache search libxkbcommon + + - name: Configure CMake + run: > + cmake -B ${{ steps.strings.outputs.build-output-dir }} + -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} + -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} + -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} + -S ${{ github.workspace }} + + - name: Build + run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }} + + - name: Test + working-directory: ${{ steps.strings.outputs.build-output-dir }} + run: ctest --build-config ${{ matrix.build_type }} diff --git a/CMakeLists.txt b/CMakeLists.txt index a5bbf68..ff9a790 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.5) project(letris) -#set(CMAKE_C_STANDARD 99) +# set(CMAKE_C_STANDARD 99) # Adding Raylib include(FetchContent) @@ -38,3 +38,6 @@ target_link_libraries(${PROJECT_NAME} PRIVATE raylib nlohmann_json) # Setting ASSETS_PATH target_compile_definitions(${PROJECT_NAME} PUBLIC ASSETS_PATH="${CMAKE_CURRENT_LIST_DIR}/assets/") # Set the asset path macro to the absolute path on the dev machine #target_compile_definitions(${PROJECT_NAME} PUBLIC ASSETS_PATH="./assets/") # Set the asset path macro in release mode to a relative path that assumes the assets folder is in the same directory as the game executable + +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17") # Ou a versão que você está usando +set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -std=c++17")