Skąd pochodzi wartość CXX w pliku makefile?
Fragment Kodu:
target_test : test.cc
$(CXX) $(CPPFLAGS) $(CFLAGS) test.cc
Wiem, że CXX
jest zmienną (zawierającą polecenie kompilatora do wywołania), ale zastanawiałem się skąd ta zmienna pochodzi. Zmienna nie jest zdefiniowana w pliku makefile i nie jest zmienną środowiskową. Czy ktoś może wyjaśnić skąd pochodzi wartość CXX
?
4 answers
Make ma kilka predefiniowanych zmiennych , wśród których jest CC
. Początkowo jest ustawiony na cc
, który jest dowiązaniem symbolicznym do zainstalowanego kompilatora C:
$ readlink -f `which cc`
/usr/bin/gcc-4.6
Także:
$ readlink -f `which c++`
/usr/bin/g++-4.6
Możesz to zmienić, jeśli chcesz.
Możesz użyć make -p -f /dev/null
, Aby uzyskać listę wszystkich ukrytych reguł i zmiennych. Nie mogę teraz pokazać wyjścia, ponieważ mam niestandardową instalację i wyjście nie jest w języku angielskim.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-09 12:13:14
CXX jest zmienną domyślną w GNU make. są też inne .
Nie tylko to, te zmienne niejawne są używane w niejawnych regułach .
Oto Wyciąg odnoszący się do tego, jak CXX jest używany przez zasadę implicit:
Kompilowanie programów C++
n.o
jest wykonywana automatycznie zn.cc
,n.cpp
, lubn.C
z przepisem z formularza$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c
.
Zachęcamy do używania przyrostka'. cc ' dla plików źródłowych C++ zamiast '.C'.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-09 12:08:02
Czy ktoś może wyjaśnić skąd pochodzi wartość
CXX
?
Podobnie jak inne" magiczne " odmiany (LD
, RM
, MAKE
), jest predefiniowany wewnętrznie przez make.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-09 12:08:13
Jest to zmienna, którą użytkownik może nadpisać i która ma domyślną wartość g++
(przynajmniej w wersji GNU Make). Nie ma w tym nic więcej (nie jest zdefiniowany w jakimś pliku lub podobnych rzeczach).
Source: The GNU Make Manual
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-09 12:08:16