Сбой сборки на последней версии ubuntu в действиях github с помощью std :: sort, но проходит без std :: sort - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь сделать что-то, казалось бы, тривиальное: использовать функцию std::sort на std::vector<float>. Это проблема, на которую я не могу найти ответа. Для справки, вот первый бит функции, которую я использую:

std::vector<std::string> MassDawg::search(std::vector<float> sequence, int ppmTol){
    MassDawgNode * currentNode = this->root;

    if (sequence.empty()) return std::vector<std::string> {};

    std::sort(sequence.begin(), sequence.end(), std::less<float>());

Примечание Я пробовал использовать эту функцию сортировки без std::less<float>() с той же проблемой.

Этот код отлично работает на моем MacBook Pro (13 дюймов 2016 года на macOS 10.15.5). Он компилируется и отлично работает на моем ноутбуке с использованием C ++ 11. Проблема связана с моим pu sh на github. У меня есть следующие настройки действий:

name: build and test

# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # This workflow contains a single job called "build"
  build:
    # The type of runner that the job will run on
    runs-on: ubuntu-latest

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
    # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
    - uses: actions/checkout@v2

    # Runs a set of commands using the runners shell
    - name: Build and test 
      run: |
        chmod u+x build_and_test_cc.sh
        echo Building and testing
        ./build_and_test_cc.sh
        echo Done

Мой сценарий оболочки ./build_and_test_cc - это небольшой сценарий, который просто запускает мой make-файл и запускает мои unittests (я использую catch.h).

Опять же, проблема возникает только ПОСЛЕ добавления функции сортировки. Если я удалю эту строку, все будет нормально. Вот мой make-файл.

# Variables 
CC = clang++
CFLAGS = -Wall -g -std=c++11

# Executable
main: main.o MassDawg.o MassDawgNode.o utils.o
    $(CC) $(CFLAGS) -o main main.o MassDawg.o MassDawgNode.o utils.o

test: test.o MassDawg.o MassDawgNode.o utils.o
    $(CC) $(CFLAGS) -o test test.o MassDawg.o MassDawgNode.o utils.o

# Object files
main.o: main.cpp MassDawg.hpp
    $(CC) $(CFLAGS) -c main.cpp

test.o: test.cpp MassDawg.hpp
    $(CC) $(CFLAGS) -c test.cpp

MassDawg.o: MassDawg.hpp MassDawgNode.hpp utils.hpp
    $(CC) $(CFLAGS) -c MassDawg.cpp 

MassDawgNode.o: MassDawgNode.hpp 
    $(CC) $(CFLAGS) -c MassDawgNode.cpp

utils.o: utils.hpp
    $(CC) $(CFLAGS) -c utils.cpp

clean:
    rm main test *.o

Моя сильная сторона - это не make-файлы, так что это вполне может быть проблемой. Я полностью озадачен и понятия не имею, что могло быть причиной этого. Спасибо

...