Witam, chcę stworzyć plik makefile, który w zależności od podanych argumentów będzie powodował inne zachowanie pliku źródłowego.
Mój plik makefile:
all: intdeque.o intdequeconst.o
ifeq ($(debuglevel), 1)
echo "WERSJA DEBUG"
intdeque.o: intdeque.cc
g++ -std=c++11 -Wall -DDEBUG_MODE intdeque.cc -o intdeque.o
intdequeconst.o: intdequeconst.cc
g++ -std=c++11 -Wall -DDEBUG_MODE intdequeconst.cc -o intdequeconst.o
else
echo "WERSJA NORMALNA"
intdeque.o: intdeque.cc
g++ -std=c++11 -Wall intdeque.cc -o intdeque.o
intdequeconst.o: intdequeconst.cc
g++ -std=c++11 -Wall intdequeconst.cc -o intdequeconst.o
endif
Mój plik źródłowy to:
#include<iostream>
#include<cstdlib>
#include"intdeque.h"
using namespace std;
#ifdef debuglevel
constexpr bool DEBUG = true;
#else
constexpr bool DEBUG = false;
#endif
int main(){
cout << "Uruchomiono plik intdeque.o" << endl;
if (DEBUG) cout << "Wersja debug"; else cout << "Wersja normalna";
cout << endl;
return 0;
}
I teraz problem: chodzi o to, żeby przy wpisaniu "make" lub "make debuglevel=0" program wypisał "Wersja normalna", natomiast przy wpisaniu "make debuglevel=1" program wypisał "Wersja debug".
Jak przekazać wartość debuglevel do pliku źródłowego? Próbowałem przegryźć się przez informacje w internecie na temat #ifdef, #ifndef oraz #ifeq, ale nie wiem nadal jak sobie z tym poradzić?