Как можно написать этот makefile?

У меня есть эти 3 команды, которые компилируют мою программу:

  1. g++ -I/usr/include/cryptopp -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"AESBest.d" -MT"AESBest.d" -o "AESBest.o" "AESBest .cpp"
  2. g++ -I/usr/include/cryptopp -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"main.d" -MT"main.d" -o "main.o" "main .cpp"
  3. g++ -L/usr/include/cryptopp -o "Крипто" AESBest.o main.o -lcryptopp -lpthread

Как можно создать make-файл, учитывая эти 3 команды?

В Eclipse я получаю вывод из программы в оболочке, но в моем bash, когда я компилирую файл bin с именем «Crypto» и запускаю его, у меня нет вывода в моей оболочке bash. Почему?


person Community    schedule 03.11.2011    source источник
comment
Рассмотрите возможность переноса последних двух строк в отдельный вопрос с дополнительными комментариями и пояснениями.   -  person Andrejs Cainikovs    schedule 03.11.2011


Ответы (1)


Это будет работать:

all:
  g++ -I/usr/include/cryptopp -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"AESBest.d" -MT"AESBest.d" -o "AESBest.o" "AESBest.cpp"
  g++ -I/usr/include/cryptopp -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"main.d" -MT"main.d" -o "main.o" "main.cpp"
  g++ -L/usr/include/cryptopp -o "Crypto" AESBest.o main.o -lcryptopp -lpthread

И вы можете разбить его немного следующим образом:

AESBest.o:
  g++ -I/usr/include/cryptopp -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"AESBest.d" -MT"AESBest.d" -o "AESBest.o" "AESBest.cpp"

main.o:
  g++ -I/usr/include/cryptopp -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"main.d" -MT"main.d" -o "main.o" "main.cpp"

Crypto:
  g++ -L/usr/include/cryptopp -o "Crypto" AESBest.o main.o -lcryptopp -lpthread

А потом упростить так:

AESBest.o main.o: %.o : %.cpp
  g++ -I/usr/include/cryptopp -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF$*.d -MT$*.d -o $@ $<

Crypto: AESBest.o main.o
  g++ -L/usr/include/cryptopp -o $@ $^ -lcryptopp -lpthread
person Beta    schedule 03.11.2011