diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..9a8d699 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,53 @@ +name: CMake Build + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + build: + + strategy: + matrix: + os: [ubuntu-latest, windows-latest] + + runs-on: ${{ matrix.os }} + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Set up CMake + uses: lukka/get-cmake@v3 + + - name: Install dependencies on Ubuntu + if: runner.os == 'Linux' + run: | + sudo apt-get update + sudo apt-get install -y g++-12 + + - name: Install dependencies on Windows + if: runner.os == 'Windows' + run: | + choco install -y cmake --installargs 'ADD_CMAKE_TO_PATH=System' + choco install -y visualstudio2019buildtools + choco install -y visualstudio2019-workload-vctools + + - name: Create build directory + run: mkdir build + + - name: Configure with CMake + run: cmake -S . -B build -DCMAKE_BUILD_TYPE=Release + + - name: Build with CMake + run: cmake --build build --config Release + + - name: Install + run: cmake --install build --prefix install + + - name: Package with CPack + run: cpack --config build/CPackConfig.cmake \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index ba8a3f9..8060653 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,6 +3,8 @@ project(git_utils) set(CMAKE_CXX_STANDARD 26) +set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG") + include(FetchContent) FetchContent_Declare( @@ -25,4 +27,8 @@ add_executable(git_utils src/main.cpp src/config.cpp src/config.h) -target_link_libraries(git_utils PRIVATE fkYAML::fkYAML) \ No newline at end of file +target_link_libraries(git_utils PRIVATE fkYAML::fkYAML) + +install(TARGETS git_utils DESTINATION bin) + +include(CPack) \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index e606765..5d6b0c3 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -3,6 +3,7 @@ #include "gitutil.h" int main() { - std::cout << GitUtil::getVersion() << std::endl; + GitUtil util; + std::cout << util.getVersion() << std::endl; return 0; }