207 похожих чатов

Решил посмотреть make как таковой, autotools и Cmake. Вопрос у меня

по Autotools:
Запустил я autoscan,
переименовал configure.scan на configure.in:
AC_PREREQ([2.69])
AC_INIT([Print()], [1.0], [E-MAIL-ADDRESS])
AM_INIT_AUTOMAKE
AC_PROG_CXX
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
Затем запустил aclocal

Запустил autoconf для генерации скрипта ./configure

Создал входной файл для automake:
touch Makefile.am
AUTOMAKE_OPTIONS = foreign
bin_PROGRAMS = print
print_SOURCES = P1.cpp P2.cpp
Запустил automake:
automake –add-missing

Появился makefile.in, запустил скрипт ./configure

Создался мой makefile.

Из моих двух файлов собрался бинарник - все ок,
но у меня этот makefile внутри имеет огромное количество инструкций для 2 исходников. Почему так?

Если брать обычный makefile, который можно самому написать, то :
Меньше раз в 10.

# Pseudo targets
.PHONY : clean install uninstall

# Variables and flags
TARGET = CalcBit
CPP = g++
CPPFLAGS = -c -Wall
LDFLAGC =
OUTFLAGS = -o

# Path for src files
PREF_SRC = ./src/
PREF_OBJ = ./obj/
PREF_BIN = /usr/local/bin

# We get src files in src-dir
SRC = $(wildcard $(PREF_SRC)*.cpp)

# We get hpp files in src-dir
HPP = $(wildcard $(PREF_SRC)*.hpp)

# We get obj files before compile
OBJ = $(patsubst $(PREF_SRC)%.cpp, $(PREF_OBJ)%.o, $(SRC))

# We get executable file
$(TARGET) : $(OBJ)
$(CPP) $(LDFLAGS) $(OBJ) $(OUTFLAGS) $(TARGET)

# We compile src.cpp
$(PREF_OBJ)%.o : $(PREF_SRC)%.cpp $(HPP)
$(CPP) $(CPPFLAGS) $< $(OUTFLAGS) $@

# Intall calculator in System
install:
sudo install $(TARGET) $(PREF_BIN)

# Uninstall calculator from System
uninstall:
sudo rm -rf $(PREF_BIN)/$(TARGET)

# Remove all object files and Executable
clean:
rm -rf $(OBJ) $(TARGET)
Ну и еще вопрос, как в конфиге configure.in описать, чтобы все лежало по папочкам , а не в одной директории, пробовал так:
AC_CONFIG_FILES([/src/Makefile]) - ошибка.
И как добавить еще цели , например, я хочу чтобы в makefile после генерации появилась цель test, которая будет запускать что-то,

1 ответов

15 просмотров

Ну, на то оно и автогенерируемое. Но вообще, советую не трогать autotools, лучше смотреть в сторону CMake.

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

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
11
У тебя в конфиге нигде нет deny all; или вообще любого deny?
Alexander Sherbakov
10
Почему стало ломаться на D11? "739002.86400000' is not a valid timestamp" function IncDateTime(aStamp:TTimeStamp;aKind:TTriggerKind;aInterval:Integer):TDateTime; //aStamp = 2...
Катерина Свиридова
8
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
думаешь я не смогу также сделать? мне это просто не удобно
int 💳 𝙖𝙞𝙧 𝙗𝙞𝙜 𝙗𝙤𝙗 🔫 check bio / spam block / AFK / nohello.com / GMT+3
9
Ребят, чет я уже не догоняю... Крч в коде на асм там происходит нечто вроде a+число (a+1, a+2 и т.д.). Но почему строка lea ecx, [edx+1] работает как a+1?? В edx берется адрес...
Alan 🔝 Бэброу
3
Карта сайта