минимальный make-файл C++ для Linux

Используйте ниже. с - вы фактически определили пользователей как список, а не как переменные. Я удалил префикс - из переменной test. Также строки между "" обрабатываются как одна команда, поэтому всегда определяйте команды между "".

Убрана проверка имени пользователя, так как в нем нет необходимости: модуль имени имеет атрибут с именем state, который будет проверять и выполнять действие, объявленное в этом состоянии.

- name: Set Password
  hosts: localhost
  become: yes
  ignore_errors: yes
  vars:
    users:
      test
  tasks:
    - name: Change Password
      user:
        name: "{{ users }}"
        password: "$1$Du3HGfHV$ny91hdJz81y.NtKw/"
        update_password: always
        state: present
22
задан HörmannHH 13 November 2008 в 15:35
поделиться

9 ответов

Если это - единственный файл, можно ввести

make t

И это вызовет

g++ t.cpp -o t

Это даже не требует Make-файла в каталоге, хотя он запутается, если у Вас будут t.cpp и t.c и t.java и т.д. и т.д.

Также реальный Make-файл:

SOURCES := t.cpp
# Objs are all the sources, with .cpp replaced by .o
OBJS := $(SOURCES:.cpp=.o)

all: t

# Compile the binary 't' by calling the compiler with cflags, lflags, and any libs (if defined) and the list of objects.
t: $(OBJS)
    $(CC) $(CFLAGS) -o t $(OBJS) $(LFLAGS) $(LIBS)

# Get a .o from a .cpp by calling compiler with cflags and includes (if defined)
.cpp.o:
    $(CC) $(CFLAGS) $(INCLUDES) -c $<
30
ответ дан 29 November 2019 в 03:46
поделиться

Вот универсальный make-файл из моего каталога фрагментов кода:

SOURCES=$(wildcard *.cpp)
OBJECTS=$(SOURCES:.cpp=.o)
DEPS=$(SOURCES:.cpp=.d)
BINS=$(SOURCES:.cpp=)

CFLAGS+=-MMD
CXXFLAGS+=-MMD

all: $(BINS)

.PHONY: clean

clean:
    $(RM) $(OBJECTS) $(DEPS) $(BINS)

-include $(DEPS)

, пока у Вас есть один .cpp источник, производящий один двоичный файл, Вам не нужно ничто больше. Я только использовал его с GNU, делают, и поколение зависимости использует gcc синтаксис (также поддерживаемый ICC). При использовании компиляторов SUN необходимо изменить "-MMD" на "-xMMD". Кроме того, удостоверьтесь, что вкладка на запуске строки после clean: не становится измененной на пробелы, когда Вы вставляете этот код, или make даст Вам недостающую ошибку разделителя.

18
ответ дан 29 November 2019 в 03:46
поделиться

Вы посмотрели SCons?

Просто создают файл SConstruct со следующим:

Program("t.cpp")

Тогда тип:

scons

Сделанный!

8
ответ дан 29 November 2019 в 03:46
поделиться

Принятие не предварительно сконфигурированного в масштабе всей системы make настройки:

CXX = g++
CPPFLAGS =        # put pre-processor settings (-I, -D, etc) here
CXXFLAGS = -Wall  # put compiler settings here
LDFLAGS =         # put linker settings here

test: test.o
    $(CXX) -o $@ $(CXXFLAGS) $(LDFLAGS) test.o

.cpp.o:
    $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $<

test.cpp: test.h
5
ответ дан 29 November 2019 в 03:46
поделиться

Вы посмотрели OMake?

OMakeroot

open build/C
DefineCommandVars()
.SUBDIRS: .

OMakefile

.DEFAULT: $(CXXProgram test, test)

Тогда на Linux или Windows, просто введите:

omake

В качестве награды, Вы автоматически добираетесь:

  • параллель создает с-j опцией (то же, как делают).
  • контрольные суммы MD5 вместо меток времени (сборка становится эластичной к отказам синхронизации времени).
  • Автоматические и точные зависимости от заголовка C/C++.
  • зависимости межкаталога Accurate (что-то, что рекурсивный делает, не предлагает).
  • Мобильность (1 цепочка сборки для управления их всех, неуязвимых для соединения каналом проблем стиля).
  • А реальный язык программирования (лучше, чем GNU делают).
1
ответ дан 29 November 2019 в 03:46
поделиться

Некоторые хорошие ссылки при создании основного Make-файла

http://en.wikipedia.org/wiki/Make_ (программное обеспечение)

http://mrbook.org/tutorials/make/

http://www.opussoftware.com/tutorial/TutMakefile.htm

http://www.hsrl.rutgers.edu/ug/make_help.html

первая пара в особенности имеет минимальные Make-файлы в качестве примера как Вы, описывали. Надежда, которая помогает.

0
ответ дан 29 November 2019 в 03:46
поделиться

SConstruct с параметром отладки:

env = Environment()

if ARGUMENTS.get('debug', 0):
    env.Append(CCFLAGS = ' -g')

env.Program( source = "template.cpp" )
0
ответ дан 29 November 2019 в 03:46
поделиться

флорин имеет хорошую начальную точку. Мне не нравилась гну autoconf, таким образом, я запустил там и взял понятие далее и назвал его MagicMakefile. У меня есть 3 версии его от простого до более сложного. Последнее находится теперь на GitHub: https://github.com/jdkoftinoff/magicmake

В основном, это предполагает, что у Вас есть стандартное расположение для исходных файлов Вашего проекта, и использует подстановочную функцию для создания правил make-файла на лету, которые являются тогда eval'd, обрабатывая зависимости заголовочного файла, перекрестную компиляцию, модульные тесты, установку и упаковку.

[редактирование] В этой точке я использую cmake для всех своих проектов, так как это генерирует полезные файлы проекта для многих систем сборки.

jeff koftinoff

0
ответ дан 29 November 2019 в 03:46
поделиться

Если Ваши проблемы - то, потому что autoconf думает, что.h файл является c файлом, попытайтесь переименовать его к .hpp или.h ++

-1
ответ дан 29 November 2019 в 03:46
поделиться
Другие вопросы по тегам:

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