Какие наборы инструментов существуют для непрерывной интеграции с C ++?

@ hop5 и @RnMss предложили использовать C ++ 11 lambdas, но если вы имеете дело с указателями, вы можете использовать их напрямую:

#include 
#include 

class CFoo {
  public:
    int m_i = 0;
    void bar() {
      ++m_i;
    }
};

int main() {
  CFoo foo;
  std::thread t1(&CFoo::bar, &foo);
  t1.join();
  std::thread t2(&CFoo::bar, &foo);
  t2.join();
  std::cout << foo.m_i << std::endl;
  return 0;
}

выходы

2

Переписанный образец из этого ответа был бы тогда:

#include 
#include 

class Wrapper {
  public:
      void member1() {
          std::cout << "i am member1" << std::endl;
      }
      void member2(const char *arg1, unsigned arg2) {
          std::cout << "i am member2 and my first arg is (" << arg1 << ") and second arg is (" << arg2 << ")" << std::endl;
      }
      std::thread member1Thread() {
          return std::thread(&Wrapper::member1, this);
      }
      std::thread member2Thread(const char *arg1, unsigned arg2) {
          return std::thread(&Wrapper::member2, this, arg1, arg2);
      }
};

int main() {
  Wrapper *w = new Wrapper();
  std::thread tw1 = w->member1Thread();
  tw1.join();
  std::thread tw2 = w->member2Thread("hello", 100);
  tw2.join();
  return 0;
}

30
задан Joe Schneider 4 June 2015 в 17:26
поделиться

5 ответов

Визуальный Профессионал Сборки является моим любимым инструментом для того, чтобы сплотить все другие инструменты. Windows только, конечно, но это интегрируется со всеми разновидностями Visual Studio и хостом инструментов тестирования, инструментов управления исходным кодом, систем отслеживания ошибок, и т.д. Это окна только, все же. Я знаю, что это не весь стек, но это - запуск.

2
ответ дан Karim 4 June 2015 в 17:26
поделиться
  • 1
    Но все это делает возвратить первый индекс массива? Кроме того, порядок повторения массива не определяется POSIX. – osvein 10 September 2017 в 12:39

G'day,

Мы на самом деле столкнулись с этой проблемой на сайте, где я заключал контракт ранее.

Один усаженный тип и записал инструменты, главным образом сценарии оболочки, к

  1. проверяют текущую кодовую базу каждый час или так и делают сборку, чтобы проверить, была ли она повреждена, и
  2. проверяют последнюю хорошую сборку и делают полную сборку и выполняют приблизительно 8 000 регрессионных тестов.

Мы просто ничто не могли найти коммерчески доступным, чтобы сделать это и так усаженный Charlie и записали это в сценариях оболочки удара, и это работало на HP-UX.

аплодисменты, Rob

1
ответ дан Rob Wells 4 June 2015 в 17:26
поделиться
  • 1
    Ответ на второй вопрос (если мы хотим решение, которое работает во всех изменениях awk) , чтобы сделать линейное сканирование И считать и возвратить число элементов в данном массиве: ... { for(i in a) c++; return c } – James Brown 25 April 2019 в 06:46

Другим вариантом может быть buildbot .

Он написан на python, но не только для приложений python. Он может выполнять любой скрипт для вашей сборки. Если вы посмотрите на их истории успеха, кажется, что существует большое разнообразие языков.

7
ответ дан 28 November 2019 в 00:28
поделиться

Как и в случае с любой другой задачей в C ++, я почти не хромаю из-за непрерывной интеграции. Моя установка начинается с Eclipse. Я установил его для создания файлов make для моих проектов. У меня есть скрипты ant, которые выполняют общие задачи сборки, выполняя команды make all или make clean в соответствующих файлах сборки. Эти скрипты муравьев являются частью моего проекта, и мне приходится обновлять их, когда я добавляю новую конфигурацию сборки или новую часть в систему. Но это не так уж и плохо.

Я использую CruiseControl для запуска сборок. Каждый проект (каждый из них) имеет собственный сценарий ant, который выполняет определенные задачи сборки (копирование артефактов, обработка результатов), вызывая сценарий ant проекта для выполнения сборки.

Мне пришлось использовать cppunit для тестирования и обработать результаты с помощью файла xslt, который я где-то нашел. У меня также есть неправильная метка ревизии svn на каждой сборке, потому что я не могу найти подходящую метку svn. Все, что я могу найти, - это наполовину завершенный код летней давности и люди, которые утверждают, что другие люди делают это неправильно.

Мне кажется, что CC - умирающая система, но я не нашел ничего лучше для C ++. Опять же, я также чувствую, что C ++ - умирающий язык, так что, возможно, он больше, чем это.

0
ответ дан 28 November 2019 в 00:28
поделиться

Мы использовали scons для непрерывной интеграции, выполняемой центральным сервером сборки. Некоторые проекты были перенесены на buildbot .

Сейчас я перехожу к рейку и рассматриваю решения, описанные в этом блоге . Фаулер упоминает, что ThoughtWorks иногда использует грабли для своих сценариев сборки в своей статье Continuous Integration .

0
ответ дан 28 November 2019 в 00:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: