Используйте ниже. с - вы фактически определили пользователей как список, а не как переменные. Я удалил префикс - из переменной 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
Если это - единственный файл, можно ввести
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 $<
Вот универсальный 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
даст Вам недостающую ошибку разделителя.
Вы посмотрели SCons?
Просто создают файл SConstruct со следующим:
Program("t.cpp")
Тогда тип:
scons
Сделанный!
Принятие не предварительно сконфигурированного в масштабе всей системы 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
Вы посмотрели OMake?
OMakeroot
open build/C
DefineCommandVars()
.SUBDIRS: .
OMakefile
.DEFAULT: $(CXXProgram test, test)
Тогда на Linux или Windows, просто введите:
omake
В качестве награды, Вы автоматически добираетесь:
Некоторые хорошие ссылки при создании основного 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-файлы в качестве примера как Вы, описывали. Надежда, которая помогает.
SConstruct с параметром отладки:
env = Environment()
if ARGUMENTS.get('debug', 0):
env.Append(CCFLAGS = ' -g')
env.Program( source = "template.cpp" )
флорин имеет хорошую начальную точку. Мне не нравилась гну autoconf, таким образом, я запустил там и взял понятие далее и назвал его MagicMakefile. У меня есть 3 версии его от простого до более сложного. Последнее находится теперь на GitHub: https://github.com/jdkoftinoff/magicmake
В основном, это предполагает, что у Вас есть стандартное расположение для исходных файлов Вашего проекта, и использует подстановочную функцию для создания правил make-файла на лету, которые являются тогда eval'd, обрабатывая зависимости заголовочного файла, перекрестную компиляцию, модульные тесты, установку и упаковку.
[редактирование] В этой точке я использую cmake для всех своих проектов, так как это генерирует полезные файлы проекта для многих систем сборки.
jeff koftinoff
Если Ваши проблемы - то, потому что autoconf думает, что.h файл является c файлом, попытайтесь переименовать его к .hpp или.h ++