Как можно написать этот make-файл? - PullRequest
0 голосов
/ 03 ноября 2011

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

  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 «Crypto» AESBest.o main.o -lcryptopp -lpthread

Как можно создать make-файл с учетом этих 3 команд?

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

1 Ответ

2 голосов
/ 04 ноября 2011

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

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
...