создание одного и того же файла для разных целей с разными параметрами - PullRequest
0 голосов
/ 21 октября 2011

У меня есть один «вспомогательный» файл, включенный в два «основных» файла, которые встроены в два исполняемых файла с одним и тем же make-файлом.У меня есть отладочные операторы печати в файле помощника.Я хочу, чтобы операторы печати были фактически напечатаны в одном исполняемом файле, но не в другом.Есть ли способ сделать это?Прямо сейчас у меня есть следующее, и я надеялся скомпилировать с DEBUG_PRINT, определенной для одного исполняемого файла, но не для другого, но я не вижу, как.

main1.cpp: #include "helper.h" ...

main2.cpp: #include "helper.h" ...

helper.cpp: #ifdef DEBUG_PRINT cout << "here is a debug message" << endl; #endif

Makefile: build: main1 main2 main1: main1.o helper.o g++ -g -o main1 main1.o helper.o main2: main2.o helper.o g++ -g -o main2 main2.o helper.o %.o: %.cpp gcc -g -c $<

1 Ответ

4 голосов
/ 21 октября 2011

Вам понадобятся два разных объектных файла (main1-helper.o и main2-helper.o) и флаги компилятора, специфичные для цели:

 main1: CXXFLAGS=-DDEBUG_PRINT
 %.o: %.cpp
      gcc $(CXXFLAGS) -g -o $@ -c $<

Примечание: это оставляет вас с проблемой создания main1-helper.o от helper.o.Есть несколько способов решить эту проблему;тем не менее, вам может быть удобнее использовать automake с самого начала, а не внедрять собственные решения.

...