Что GNU делают заменой, Вы рекомендуете? [закрытый]

Что-то вроде этого я думаю:

public class Planets 
{
    public static readonly Planet MERCURY = new Planet(3.303e+23, 2.4397e6);
    public static readonly Planet VENUS = new Planet(4.869e+24, 6.0518e6);
    public static readonly Planet EARTH = new Planet(5.976e+24, 6.37814e6);
    public static readonly Planet MARS = new Planet(6.421e+23, 3.3972e6);
    public static readonly Planet JUPITER = new Planet(1.9e+27,   7.1492e7);
    public static readonly Planet SATURN = new Planet(5.688e+26, 6.0268e7);
    public static readonly Planet URANUS = new Planet(8.686e+25, 2.5559e7);
    public static readonly Planet NEPTUNE = new Planet(1.024e+26, 2.4746e7);
    public static readonly Planet PLUTO = new Planet(1.27e+22,  1.137e6);
}

public class Planet
{
    public double Mass {get;private set;}
    public double Radius {get;private set;}

    Planet(double mass, double radius)
    {
        Mass = mass;
        Radius = radius;
    }

    // universal gravitational constant  (m3 kg-1 s-2)
    private static readonly double G = 6.67300E-11;

    public double SurfaceGravity()
    {
        return G * Mass / (Radius * Radius);
    }

    public double SurfaceWeight(double otherMass)
    {
        return otherMass * SurfaceGravity();
    }
}

Или объединение константы в Planet класс как выше

10
задан 5 revs, 2 users 89% 14 September 2017 в 20:23
поделиться

9 ответов

Я использую cmake , и я ' язык, специализированный для сборок программного обеспечения

  • Встроенный автоматический анализ зависимостей для C, C ++, Fortran и Java
  • Поддержка SWIG, Qt через язык сценариев CMake
  • Встроенная поддержка многих версий Microsoft Visual Studio включая версии 6, 7, 7.1, 8.0 и 9.0
  • Создает файлы сборки для Eclipse CDT (средства разработки C / C ++)
  • Обнаружение изменений содержимого файлов с использованием традиционных меток времени,
  • Поддержка параллельных сборок
  • Кросс-компиляция
  • Глобальное представление всех зависимостей с использованием CMake для вывода диаграммы graphviz
  • Поддержка кроссплатформенных сборок и, как известно, работает над
    • Linux и другие системы POSIX (включая системы AIX, * BSD, HP-UX, IRIX / SGI и Solaris)
    • Mac OS X
    • Windows 95/98 / NT / 2000 / XP, Windows Vista и MinGW / MSYS
  • Интегрирован с DART (программное обеспечение), CDash, CTest и CPack, набором инструментов для тестирования и выпуска программного обеспечения
  • Но, честно говоря: почти все лучше, чем gnu toolchain ].

    19
    ответ дан 3 December 2019 в 13:14
    поделиться

    SCons и waf являются хорошими (ну, в любом случае, IMHO) системами сборки и зависят только от Python.

    9
    ответ дан 3 December 2019 в 13:14
    поделиться

    Как насчет "gnu make"?

    Вы запросили нечто подобное, не указав, какие функции вам нужны, но не поддерживаются gnu make.

    8
    ответ дан 3 December 2019 в 13:14
    поделиться

    Boost.Jam

    В нем есть функции, которые вы назвали

    • интерфейс командной строки;
    • легко;
    • он взят из коллекции библиотеки C ++ Boost, поэтому имеет хорошие поддержка C ++ (и не только C ++);
    • он хранит исполняемые файлы в местах в каталоге bin , в зависимости от того, какой запрос сборки вы указали. Если вы используете gcc 4.3.2, вы получите исполняемые файлы под
      • bin / gcc-4.3.2 / debug - при выполнении bjam
      • bin / gcc-4.3.2 / release - при выполнении bjam release
      • bin / gcc-4.3.2 / release / inlining-off / threading-multi - при выполнении bjam release inlining = off threading = multi
      • bin / gcc-4.3.2 / release / threading- multi - для выпуска bjam inlining = full threading = multi , потому что для выпуска по умолчанию используется inlining = full.
    • ему не нужна полная коллекция библиотеки Boost, только Boost.Build и Boost .Jam необходимы;
    • независимая от платформы;
    • синтаксис Jamfile простой, но мощный;
    • вы можете разделить конфигурацию сборки на множество Jam-файлов в подкаталогах.
    8
    ответ дан 3 December 2019 в 13:14
    поделиться

    CMake должен отвечать большинству, если не всем вашим требованиям.

    • Он сгенерирует для вас файлы Makefile.

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

    • Он решает большинство проблем с рекурсивным make (см. рекурсивный make считается вредным статья).

    • Он использует сборку вне исходного кода, поэтому у вас есть разделение bin / src .

    Я обнаружил, что это легко писать, легко поддерживать и быстро создавать.

    ... Плюс:

    • Это кроссплатформенный.

    • С CText и CDash у него есть все, что вам нужно для установки службы непрерывной интеграции.

    См. также этот ответ на Рекурсивное создание - друг или враг?

    7
    ответ дан 3 December 2019 в 13:14
    поделиться
    5
    ответ дан 3 December 2019 в 13:14
    поделиться

    Попробуйте SELECT DISTINCT вместо SELECT . Ключевое слово DISTINCT удалит повторяющееся значение

    .

    Может быть, еще раз взглянуть после прочтения первых нескольких глав превосходной книги Роберта Мекленбурга «Управление проектами с помощью GNU Make» ( дезинфицированная ссылка Amazon ).

    Или, что еще лучше, найти копия предыдущего издания Эндрю Орама и Стива Тэлботта «Управление проектами с помощью make». Первые несколько глав дают отличное описание основ (g) make и [Mm] akefile.

    И я вижу, вы можете купить подержанную копию 2-го изд. от Amazon за княжескую сумму в 0,01 доллара! ( дезинфицированная ссылка Amazon )

    Прочитав это вступление, вы даже поймете, как make работает с обратной цепочкой, что немного неинтуитивно, если просто посмотреть на поведение make.

    HTH

    ура,

    Первые несколько глав дают прекрасное описание основ (g) make и [Mm] akefile.

    И я вижу, вы можете купить подержанную копию 2-го изд. от Amazon за княжескую сумму в 0,01 доллара! ( дезинфицированная ссылка Amazon )

    Прочитав это вступление, вы даже поймете, как make работает с обратной цепочкой, что немного неинтуитивно, если просто посмотреть на поведение make.

    HTH

    ура,

    Первые несколько глав дают отличное описание основ (g) make и [Mm] akefile.

    И я вижу, вы можете купить подержанную копию 2-го изд. от Amazon за княжескую сумму в 0,01 доллара! ( дезинфицированная ссылка Amazon )

    Прочитав это вступление, вы даже поймете, как make работает с обратной цепочкой, что немного неинтуитивно, если просто посмотреть на поведение make.

    HTH

    ура,

    3
    ответ дан 3 December 2019 в 13:14
    поделиться

    Autotools - autoconf / automake / libtool они очень мощные инструменты сборки.

    Начать с ними нужно некоторое время, но потом - они вам очень хорошо служат.

    И, что более важно, они намного мощнее своих заменителей (CMake, BJam, SCons и т. Д.).

    Насколько они мощнее?

    • Прозрачная поддержка создания как статических, так и разделяемых библиотек с помощью libtool.
    • Поддержка удаления (нет в CMake)
    • Поддержка стандартных путей установки - очень важна при упаковке.
    • Полная поддержка и интеграция gettext.
    • Прозрачная и прямая поддержка кросс-компиляции.

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

    3
    ответ дан 3 December 2019 в 13:14
    поделиться

    Что не так с gmake?

    Какие у него проблемы, которые означают, что вы хотите его использовать. Нет смысла рекомендовать другой инструмент, если он имеет те же проблемы, что и gmake.

    мы используем gmake в нашей системе сборки, и мы очень довольны его производительностью, гибкостью и функциями

    2
    ответ дан 3 December 2019 в 13:14
    поделиться
    Другие вопросы по тегам:

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