From 1c1e709ed18ea184e90164343003d9df4716cd43 Mon Sep 17 00:00:00 2001 From: yyc12345 Date: Thu, 22 Jan 2026 16:10:54 +0800 Subject: [PATCH] chore: update github build script. - enable gtest and benchmark build. - allow install gtest and benchmark binary. - add test and benchmark step in github action. --- .github/workflows/linux.yml | 56 ++++++++++++++++++++------------- .github/workflows/macos.yml | 56 ++++++++++++++++++++------------- .github/workflows/windows.yml | 58 ++++++++++++++++++++++------------- benchmark/CMakeLists.txt | 5 +++ test/CMakeLists.txt | 5 +++ 5 files changed, 114 insertions(+), 66 deletions(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 9b00173..ee391e2 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -13,32 +13,44 @@ jobs: run: | sudo apt update sudo apt install -y build-essential cmake git - # - name: Setup Google Test and Google Benchmark - # run: | - # # Setup Google Test - # git clone -b v1.17.0 https://github.com/google/googletest.git extern/googletest - # cd extern/googletest - # mkdir build install - # cd build - # cmake -DCMAKE_CXX_STANDARD=23 -Dgtest_force_shared_crt=ON -DCMAKE_BUILD_TYPE=Release .. - # cmake --build . - # cmake --install . --prefix=../install - # cd ../.. - # # Setup Google Benchmark - # git clone -b v1.9.4 https://github.com/google/benchmark.git extern/benchmark - # cd extern/benchmark - # # Create symlink to googletest as required by benchmark - # ln -s ../googletest googletest - # mkdir build install - # cd build - # cmake -DCMAKE_CXX_STANDARD=23 -DBENCHMARK_ENABLE_TESTING=OFF -DCMAKE_BUILD_TYPE=Release .. - # cmake --build . - # cmake --install . --prefix=../install - # cd ../.. + - name: Setup Google Test and Google Benchmark + run: | + # Setup Google Test + git clone -b v1.17.0 https://github.com/google/googletest.git --depth 1 extern/googletest + cd extern/googletest + mkdir build install + cd build + cmake -DCMAKE_CXX_STANDARD=23 -Dgtest_force_shared_crt=ON -DCMAKE_BUILD_TYPE=Release .. + cmake --build . + cmake --install . --prefix=../install + cd .. + cd install + export GTest_ROOT=$(pwd) + cd ../.. + # Setup Google Benchmark + git clone -b v1.9.4 https://github.com/google/benchmark.git --depth 1 extern/benchmark + cd extern/benchmark + # Create symlink to googletest as required by benchmark + ln -s ../googletest googletest + mkdir build install + cd build + cmake -DCMAKE_CXX_STANDARD=23 -DBENCHMARK_ENABLE_TESTING=OFF -DCMAKE_BUILD_TYPE=Release .. + cmake --build . + cmake --install . --prefix=../install + cd .. + cd install + export benchmark_ROOT=$(pwd) + cd ../.. - name: Build YYCC run: | chmod +x ./.github/linux_build.sh ./.github/linux_build.sh + - name: Run YYCC Test + run: | + ./bin/install/bin/YYCCTest + - name: Run YYCC Benchmark + run: | + ./bin/install/bin/YYCCBenchmark - name: Upload Built Artifact uses: actions/upload-artifact@v4 with: diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index e1ce74c..6d9f1da 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -9,32 +9,44 @@ jobs: steps: - name: Checkout Repository uses: actions/checkout@v4 - # - name: Setup Google Test and Google Benchmark - # run: | - # # Setup Google Test - # git clone -b v1.17.0 https://github.com/google/googletest.git extern/googletest - # cd extern/googletest - # mkdir build install - # cd build - # cmake -DCMAKE_CXX_STANDARD=23 -Dgtest_force_shared_crt=ON -DCMAKE_BUILD_TYPE=Release .. - # cmake --build . - # cmake --install . --prefix=../install - # cd ../.. - # # Setup Google Benchmark - # git clone -b v1.9.4 https://github.com/google/benchmark.git extern/benchmark - # cd extern/benchmark - # # Create symlink to googletest as required by benchmark - # ln -s ../googletest googletest - # mkdir build install - # cd build - # cmake -DCMAKE_CXX_STANDARD=23 -DBENCHMARK_ENABLE_TESTING=OFF -DCMAKE_BUILD_TYPE=Release .. - # cmake --build . - # cmake --install . --prefix=../install - # cd ../.. + - name: Setup Google Test and Google Benchmark + run: | + # Setup Google Test + git clone -b v1.17.0 https://github.com/google/googletest.git --depth 1 extern/googletest + cd extern/googletest + mkdir build install + cd build + cmake -DCMAKE_CXX_STANDARD=23 -Dgtest_force_shared_crt=ON -DCMAKE_BUILD_TYPE=Release .. + cmake --build . + cmake --install . --prefix=../install + cd .. + cd install + export GTest_ROOT=$(pwd) + cd ../.. + # Setup Google Benchmark + git clone -b v1.9.4 https://github.com/google/benchmark.git --depth 1 extern/benchmark + cd extern/benchmark + # Create symlink to googletest as required by benchmark + ln -s ../googletest googletest + mkdir build install + cd build + cmake -DCMAKE_CXX_STANDARD=23 -DBENCHMARK_ENABLE_TESTING=OFF -DCMAKE_BUILD_TYPE=Release .. + cmake --build . + cmake --install . --prefix=../install + cd .. + cd install + export benchmark_ROOT=$(pwd) + cd ../.. - name: Build YYCC run: | chmod +x ./.github/macos_build.sh ./.github/macos_build.sh + - name: Run YYCC Test + run: | + ./bin/install/bin/YYCCTest + - name: Run YYCC Benchmark + run: | + ./bin/install/bin/YYCCBenchmark - name: Upload Built Artifact uses: actions/upload-artifact@v4 with: diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 69ae53b..998fa2e 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -16,28 +16,34 @@ jobs: steps: - name: Checkout Repository uses: actions/checkout@v4 - # - name: Setup Google Test and Google Benchmark - # run: | - # # Setup Google Test - # git clone -b v1.17.0 https://github.com/google/googletest.git extern/googletest - # cd extern/googletest - # mkdir build install - # cd build - # cmake -DCMAKE_CXX_STANDARD=23 -Dgtest_force_shared_crt=ON -DCMAKE_BUILD_TYPE=Release .. - # cmake --build . --config Release - # cmake --install . --prefix=../install --config Release - # cd ../.. - # # Setup Google Benchmark - # git clone -b v1.9.4 https://github.com/google/benchmark.git extern/benchmark - # cd extern/benchmark - # # Create symlink to googletest as required by benchmark - # mklink /D googletest ../googletest - # mkdir build install - # cd build - # cmake -DCMAKE_CXX_STANDARD=23 -DBENCHMARK_ENABLE_TESTING=OFF -DCMAKE_BUILD_TYPE=Release .. - # cmake --build . --config Release - # cmake --install . --prefix=../install --config Release - # cd ../.. + - name: Setup Google Test and Google Benchmark + run: | + # Setup Google Test + git clone -b v1.17.0 https://github.com/google/googletest.git --depth 1 extern/googletest + cd extern/googletest + mkdir build install + cd build + cmake -DCMAKE_CXX_STANDARD=23 -Dgtest_force_shared_crt=ON -DCMAKE_BUILD_TYPE=Release .. + cmake --build . --config Release + cmake --install . --prefix=../install --config Release + cd .. + cd install + set GTest_ROOT=%CD% + cd ../.. + # Setup Google Benchmark + git clone -b v1.9.4 https://github.com/google/benchmark.git --depth 1 extern/benchmark + cd extern/benchmark + # Create symlink to googletest as required by benchmark + mklink /D googletest ../googletest + mkdir build install + cd build + cmake -DCMAKE_CXX_STANDARD=23 -DBENCHMARK_ENABLE_TESTING=OFF -DCMAKE_BUILD_TYPE=Release .. + cmake --build . --config Release + cmake --install . --prefix=../install --config Release + cd .. + cd install + set benchmark_ROOT=%CD% + cd ../.. - name: Build YYCC shell: cmd run: | @@ -46,6 +52,14 @@ jobs: if not exist %VCVARS% set VCVARS="C:\Program Files\Microsoft Visual Studio\%VS%\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" call %VCVARS% ${{ matrix.msvc_arch }} .\.github\windows_build.bat + - name: Run YYCC Test + shell: cmd + run: | + .\bin\install\bin\YYCCTest.exe + - name: Run YYCC Benchmark + shell: cmd + run: | + .\bin\install\bin\YYCCBenchmark.exe - name: Upload Built Artifact uses: actions/upload-artifact@v4 with: diff --git a/benchmark/CMakeLists.txt b/benchmark/CMakeLists.txt index 1417e48..52590f5 100644 --- a/benchmark/CMakeLists.txt +++ b/benchmark/CMakeLists.txt @@ -26,3 +26,8 @@ PRIVATE YYCCommonplace benchmark::benchmark ) + +# Install binary +install(TARGETS YYCCBenchmark + RUNTIME DESTINATION ${YYCC_INSTALL_BIN_PATH} +) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 34c51f9..6266fbd 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -61,6 +61,11 @@ PRIVATE GTest::gtest_main ) +# Install binary +install(TARGETS YYCCTest + RUNTIME DESTINATION ${YYCC_INSTALL_BIN_PATH} +) + # Discover all test include(GoogleTest) gtest_discover_tests(YYCCTest)