2016-11-16 3 views
1

Ich habe Code geerbt, der mit Autotools erstellt wird, aber ich habe immer CMake verwendet. Einige der C++ - Quellen verwenden die C++ 11- und C++ 14-Standards. Allerdings, wenn ich laufeWie lege ich Build-Regeln für eine Datei mithilfe von Autotools fest (automake, configure usw.)?

CXXFLAGS="$CXXFLAGS -std=c++14" ./configure 
make 

nur einige der C++ Quelldateien mit der -std=c++14 Flagge gebaut werden. Wenn dies ein einfaches Makefile ist und ich bemerkte, dass foo.cc nicht mit den richtigen Fahnen gebaut wurde, könnte ich sehen

foo.o: foo.cc foo.h 
    $(CXX) -c foo.c 

zu

foo.o: foo.cc foo.h 
    $(CXX) $(CXXFLAGS) -c foo.c 

Gibt es eine Analog dazu in Autotool zu ändern? Ich habe configure.ac und Makefile.am überprüft aber die Lösung nicht gefunden.

+0

Siehst du tatsächlich foo.o Regeln in 'Makefile.am'? Es sollte keine geben, weil automake das selbst macht. –

Antwort

1

Was Sie tun, Einstellung CXXFLAGS beim Aufruf konfigurieren, sollte funktionieren. Häufig machen Makefile.am-Autoren jedoch den Fehler, CXXFLAGS innerhalb des Makefile zu setzen, das Ihre Einstellung außer Kraft setzt, anstatt AM_CXXFLAGS wie gewünscht einzustellen. Das könnte hier der Fall sein.

In jedem Fall, wenn Ihr Programm C++ 14 erfordert, dann sollten Sie wahrscheinlich das AX_CXX_COMPILE_STDCXX([14]) Makro, und legen Sie es in Ihrem configure.ac, anstatt Flags setzen.

0

In dem Fall, dass CXXFLAGS bereits mit einem anderen -std=... Sie müssen definiert wurde das configure-Skript auf diese Weise auszuführen statt:

./configure CXXFLAGS=" -std=c++14"

Beachten Sie, dass @ptomato über den Unterschied zwischen AM_CXXFLAGS und CXXFLAGS richtig ist.

Verwandte Themen