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 ответов

50 просмотров

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта