diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml new file mode 100644 index 0000000..03cedb2 --- /dev/null +++ b/.github/workflows/cmake.yml @@ -0,0 +1,61 @@ +name: CMake + +on: + push: + branches: [ "*" ] + pull_request: + branches: [ "*" ] + +env: + # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) + CMAKE_BUILD_TYPE: Release + +jobs: + build-binaries: + strategy: + fail-fast: false + matrix: + platform: [macos-latest, ubuntu-latest, windows-latest] + + # The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac. + # You can convert this to a matrix build if you need cross-platform coverage. + # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix + runs-on: ${{ matrix.platform }} + + steps: + - uses: actions/checkout@v3 + + - name: Configure CMake + # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. + # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type + run: | + mkdir build + cd build + cmake .. + + - name: Build + # Build your program with the given configuration + run: | + cd build + cmake --build . --config ${{ env.CMAKE_BUILD_TYPE }} + ls + + - name: Upload Posix Build Artifact + uses: actions/upload-artifact@v3.1.2 + if: runner.os != 'Windows' + with: + # Artifact name + name: cgit_${{ runner.os }} + # A file, directory or wildcard pattern that describes what to upload + path: build/cgit + retention-days: 15 + + - name: Upload Windows Build Artifact + uses: actions/upload-artifact@v3.1.2 + if: runner.os == 'Windows' + with: + # Artifact name + name: cgit_${{ runner.os }} + # A file, directory or wildcard pattern that describes what to upload + path: build/${{ env.CMAKE_BUILD_TYPE }}/cgit.exe + retention-days: 15 diff --git a/CMakeLists.txt b/CMakeLists.txt index bc19e15..795b1b1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,12 +3,14 @@ project(cgit CXX) set(CMAKE_CXX_STANDARD 11) -IF (WIN32) +if (WIN32) set(CMAKE_CXX_FLAGS_RELEASE "/MT ${CMAKE_CXX_FLAGS}") set(CMAKE_CXX_FLAGS_DEBUG "/MTd ${CMAKE_CXX_FLAGS}") -ELSE () -set(CMAKE_CXX_FLAGS "-static ${CMAKE_CXX_FLAGS}") -ENDIF () +elseif (APPLE) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") +else () + set(CMAKE_CXX_FLAGS "-static ${CMAKE_CXX_FLAGS}") +endif () add_executable(cgit src/main.cpp src/cgit.cpp src/string.hpp src/utils.hpp src/utils.cpp) message(STATUS ${CMAKE_INSTALL_BINDIR})