Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create cmake-multi-platform.yml #1

Closed
wants to merge 28 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
aa35bdd
Create cmake-multi-platform.yml
SunBeau Apr 11, 2024
4f96e43
Update cmake-multi-platform.yml
SunBeau Apr 11, 2024
2f5d738
Update cmake-multi-platform.yml
SunBeau Apr 11, 2024
453e065
Update cmake-multi-platform.yml
SunBeau Apr 11, 2024
692a080
Update cmake-multi-platform.yml
SunBeau Apr 11, 2024
b41e5bc
Update cmake-multi-platform.yml
SunBeau Apr 11, 2024
9e925cb
Update cmake-multi-platform.yml
SunBeau Apr 11, 2024
6b3b371
Update cmake-multi-platform.yml
SunBeau Apr 11, 2024
2d62e2e
Update cmake-multi-platform.yml
SunBeau Apr 11, 2024
1d288eb
Update cmake-multi-platform.yml
SunBeau Apr 11, 2024
342138b
Update cmake-multi-platform.yml
SunBeau Apr 11, 2024
e18953f
Update cmake-multi-platform.yml
SunBeau Apr 11, 2024
c8a011a
Update cmake-multi-platform.yml
SunBeau Apr 11, 2024
2a2c90a
Update cmake-multi-platform.yml
SunBeau Apr 11, 2024
838cc4f
Update cmake-multi-platform.yml
SunBeau Apr 11, 2024
563e972
Update cmake-multi-platform.yml
SunBeau Apr 11, 2024
794fee5
Update cmake-multi-platform.yml
SunBeau Apr 12, 2024
a6434a3
Update cmake-multi-platform.yml
SunBeau Apr 12, 2024
6d8342d
Update cmake-multi-platform.yml
SunBeau Apr 12, 2024
82e1127
Update cmake-multi-platform.yml
SunBeau Apr 12, 2024
17f2a3b
Update cmake-multi-platform.yml
SunBeau Apr 12, 2024
7c7586a
Update cmake-multi-platform.yml
SunBeau Apr 12, 2024
a21a993
Update cmake-multi-platform.yml
SunBeau Apr 12, 2024
50e0331
Update cmake-multi-platform.yml
SunBeau Apr 12, 2024
1e4c281
Update CMakeLists.txt
SunBeau Apr 12, 2024
09edc73
Update cmake-multi-platform.yml
SunBeau Apr 12, 2024
066bbea
Update cmake-multi-platform.yml
SunBeau Apr 12, 2024
9fd36ad
add test
SunBeau Apr 12, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
171 changes: 171 additions & 0 deletions .github/workflows/cmake-multi-platform.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,171 @@
# This starter workflow is for a CMake project running on multiple platforms. There is a different starter workflow if you just want a single platform.
# See: https://github.com/actions/starter-workflows/blob/main/ci/cmake-single-platform.yml
name: CMake on multiple platforms

on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

jobs:
test-on-ubuntu-2204:
name: test-on-ubuntu-22.04
runs-on: ubuntu-latest
container:
image: docker.io/ubuntu:22.04
volumes:
- ${{ github.workspace }}:${{ github.workspace }}

strategy:
# Set fail-fast to false to ensure that feedback is delivered for all matrix combinations. Consider changing this to true when your workflow is stable.
fail-fast: false

steps:
- uses: actions/checkout@v3

- name: Intall Deps
run: |
apt-get update
apt-get install -y gcc make cmake

- name: Configure CMake And Build
working-directory: ${{ github.workspace }}
run: |
mkdir build && cd build
cmake .. && make && make install

- name: Test
working-directory: ${{ github.workspace }}
run: |
cd build
make test

test-on-ubuntu-2004:
name: test-on-ubuntu-20.04
runs-on: ubuntu-latest
container:
image: docker.io/ubuntu:20.04
volumes:
- ${{ github.workspace }}:${{ github.workspace }}

strategy:
# Set fail-fast to false to ensure that feedback is delivered for all matrix combinations. Consider changing this to true when your workflow is stable.
fail-fast: false

steps:
- uses: actions/checkout@v3

- name: Intall Deps
run: |
apt-get update
apt-get install -y gcc make cmake

- name: Configure CMake And Build
working-directory: ${{ github.workspace }}
run: |
mkdir build && cd build
cmake .. && make && make install

- name: Test
working-directory: ${{ github.workspace }}
run: |
cd build
make test

test-on-ubuntu-1804:
name: test-on-ubuntu-18.04
runs-on: ubuntu-latest
container:
image: docker.io/ubuntu:18.04
volumes:
- ${{ github.workspace }}:${{ github.workspace }}

strategy:
# Set fail-fast to false to ensure that feedback is delivered for all matrix combinations. Consider changing this to true when your workflow is stable.
fail-fast: false

steps:
- uses: actions/checkout@v3

- name: Intall Deps
run: |
apt-get update
apt-get install -y gcc make cmake

- name: Configure CMake And Build
working-directory: ${{ github.workspace }}
run: |
mkdir build && cd build
cmake .. && make && make install

- name: Test
working-directory: ${{ github.workspace }}
run: |
cd build
make test

test-on-centos-792009:
name: test-on-centos-7.9.2009
runs-on: ubuntu-latest
container:
image: docker.io/centos:7.9.2009
volumes:
- ${{ github.workspace }}:${{ github.workspace }}

strategy:
# Set fail-fast to false to ensure that feedback is delivered for all matrix combinations. Consider changing this to true when your workflow is stable.
fail-fast: false

steps:
- uses: actions/checkout@v3

- name: Intall Deps
run: |
yum install -y gcc make cmake

- name: Configure CMake And Build
working-directory: ${{ github.workspace }}
run: |
mkdir build && cd build
cmake .. && make && make install

- name: Test
working-directory: ${{ github.workspace }}
run: |
cd build
make test

test-on-centos-731611:
name: test-on-centos-7.3.1611
runs-on: ubuntu-latest
container:
image: docker.io/centos:7.3.1611
volumes:
- ${{ github.workspace }}:${{ github.workspace }}

strategy:
# Set fail-fast to false to ensure that feedback is delivered for all matrix combinations. Consider changing this to true when your workflow is stable.
fail-fast: false

steps:
- uses: actions/checkout@v3

- name: Intall Deps
run: |
yum install -y gcc make cmake

- name: Configure CMake And Build
working-directory: ${{ github.workspace }}
run: |
mkdir build && cd build
cmake .. && make && make install

- name: Test
working-directory: ${{ github.workspace }}
run: |
cd build
make test
4 changes: 4 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -101,3 +101,7 @@ INSTALL(TARGETS qlibc LIBRARY DESTINATION lib)
INSTALL(TARGETS qlibcext LIBRARY DESTINATION lib)
INSTALL(TARGETS qlibc-static ARCHIVE DESTINATION lib)
INSTALL(TARGETS qlibcext-static ARCHIVE DESTINATION lib)

# add test
ENABLE_TESTING()
ADD_SUBDIRECTORY(${qlibc_SOURCE_DIR}/tests)
44 changes: 44 additions & 0 deletions tests/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
include_directories(${qlibc_SOURCE_DIR}/include/qlibc)
SET(test_list
test_qstring
test_qhashtbl
test_qhasharr
test_qhasharr_darkdh
test_qtreetbl
test_qlist
test_qvector
test_qqueue
test_qstack
test_qhash
)

SET(test_file_list
test_qhash_data_1.bin
test_qhash_data_2.bin
test_qhash_data_3.bin
test_qhash_data_4.bin
)

# build test
foreach(element IN LISTS test_list)
message(STATUS "set build test: ${element}")
add_executable(${element} ${element}.c)
target_link_libraries(${element} qlibc qlibcext)
endforeach()

# copy test file
foreach(element IN LISTS test_file_list)
add_custom_target(cpoy_${element} ALL
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${CMAKE_CURRENT_SOURCE_DIR}/${element}
${CMAKE_CURRENT_BINARY_DIR}/${element}
COMMENT "Copying ${element} to binary dir"
VERBATIM
)
endforeach()

# run test
foreach(element IN LISTS test_list)
message(STATUS "set run test: ${element}")
ADD_TEST(NAME ${element} COMMAND ${qlibc_SOURCE_DIR}/tests/launcher.sh ${element})
endforeach()
Loading