Skip to content

Commit

Permalink
Merge pull request #111 from SunBeau/main
Browse files Browse the repository at this point in the history
fix cmake error on centos
  • Loading branch information
wolkykim authored Apr 12, 2024
2 parents 470d496 + 8258f31 commit 9734923
Show file tree
Hide file tree
Showing 4 changed files with 226 additions and 5 deletions.
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@v4

- 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@v4

- 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
15 changes: 10 additions & 5 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -95,8 +95,13 @@ TARGET_LINK_LIBRARIES(qlibc PRIVATE ${CMAKE_THREAD_LIBS_INIT})
TARGET_LINK_LIBRARIES(qlibcext-static PRIVATE ${CMAKE_THREAD_LIBS_INIT})
TARGET_LINK_LIBRARIES(qlibcext PUBLIC qlibc)

INSTALL(DIRECTORY ${qlibc_SOURCE_DIR}/include/qlibc DESTINATION include)
INSTALL(TARGETS qlibc LIBRARY DESTINATION lib)
INSTALL(TARGETS qlibc-static LIBRARY DESTINATION lib)
INSTALL(TARGETS qlibcext LIBRARY DESTINATION lib)
INSTALL(TARGETS qlibcext-static LIBRARY DESTINATION lib)
SET(QLIBC_HEADER "${qlibc_SOURCE_DIR}/include/qlibc")
INSTALL(DIRECTORY ${QLIBC_HEADER} DESTINATION include)
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)
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,7 @@ The following people have helped with suggestions, ideas, code or fixing bugs:
* RQ
* [Ryan Gonzalez](https://github.com/kirbyfan64)
* [Stroh Snow](https://github.com/strohsnow)
* [SunBeau](https://github.com/SunBeau)
* Umesh

If we have forgotten or misspelled your name, please let us know.
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(${CMAKE_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 ${CMAKE_CURRENT_BINARY_DIR}"
VERBATIM
)
ENDFOREACH()

# run test
FOREACH(element IN LISTS test_list)
MESSAGE(STATUS "set run test: ${element}")
ADD_TEST(NAME ${element} COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/launcher.sh ${element})
ENDFOREACH()

0 comments on commit 9734923

Please sign in to comment.