Что-то вроде этого я думаю:
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
класс как выше
Я использую cmake , и я ' язык, специализированный для сборок программного обеспечения
Но, честно говоря: почти все лучше, чем gnu toolchain ].
SCons и waf являются хорошими (ну, в любом случае, IMHO) системами сборки и зависят только от Python.
Как насчет "gnu make"?
Вы запросили нечто подобное, не указав, какие функции вам нужны, но не поддерживаются gnu make.
В нем есть функции, которые вы назвали
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. Jamfile
простой, но мощный; CMake должен отвечать большинству, если не всем вашим требованиям.
Он сгенерирует для вас файлы Makefile.
Он имеет хорошие примитивы для конкретной предметной области, а также простой язык для тех случаев, когда вам нужно сделать что-то особенное.
Он решает большинство проблем с рекурсивным make (см. рекурсивный make считается вредным статья).
Он использует сборку вне исходного кода, поэтому у вас есть разделение bin / src
.
Я обнаружил, что это легко писать, легко поддерживать и быстро создавать.
... Плюс:
Это кроссплатформенный.
С CText и CDash у него есть все, что вам нужно для установки службы непрерывной интеграции.
См. также этот ответ на Рекурсивное создание - друг или враг?
Попробуйте 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
ура,
Autotools - autoconf / automake / libtool они очень мощные инструменты сборки.
Начать с ними нужно некоторое время, но потом - они вам очень хорошо служат.
И, что более важно, они намного мощнее своих заменителей (CMake, BJam, SCons и т. Д.).
Насколько они мощнее?
Многое. CMake может делать большинство вещей, но для каждого из них вы должны написать длинные скрипты или указать многие вещи вручную.
Что не так с gmake?
Какие у него проблемы, которые означают, что вы хотите его использовать. Нет смысла рекомендовать другой инструмент, если он имеет те же проблемы, что и gmake.
мы используем gmake в нашей системе сборки, и мы очень довольны его производительностью, гибкостью и функциями