2015-10-03 2 views
-1

Я реализую класс списка для проекта и очень запутался в том, как настроить мой make-файл. Я сделал все свои кодировки в Xcode IDE и прекрасно компилируется там, но мне нужно убедиться, что я могу скомпилировать свою программу в unix. Я использовал функции C++ 11 в своем коде и был под впечатлением, что правильно писал флаг в своем makefile -std = C++ 11, но он не распознается. У меня есть List.hpp, List.h, test_list.cpp все в том же каталоге, что и мой файл make. Нужно ли мне писать что-то другое в моем make-файле, так как моя реализация моего класса списка - это файл hpp, а не файл cpp?Нужна помощь в создании моего Makefile

Это ошибка Я получаю слово в слово:

g++ -std=c++11 -Wall -pedantic -g -o proj2.x test_list.cpp 
cc1plus: error: unrecognized command line option "-std=c++11" 
make: *** [proj2.x] Error 1 

Может кто-нибудь объяснить, где я неправильно с моей Makefile? Если есть что-то еще, что я должен опубликовать, чтобы помочь кому-то ответить на мой вопрос, дайте мне знать.

Вот что у меня есть:

C=g++ 
CXX=g++ 
CXXFLAGS=-std=c++11 -Wall -pedantic 

proj2.x: test_list.cpp 
    $(CXX) $(CXXFLAGS) -g -o proj2.x test_list.cpp 

clean: 
    rm *.o *.x 
+0

Поддерживает ли ваша версия gcc этот флаг, или вам нужно предоставить '-std = C++ 0x' вместо этого? – Barry

+0

Как проверить, поддерживает ли моя версия gcc этот флаг? Я попробовал -std = C++ 0x, но это не сработало – Talcicio

+0

Какую версию gcc вы используете? – Barry

ответ

1

Ваш Makefile не имеет никаких проблем с ним. Проблема в том, что ваша версия gcc является старым инструментом, чтобы иметь опцию -std=c++11! Это не добавилось до 4,7. В gcc 4.4 даже не так много C++11 support, так что это кажется отличной возможностью для обновления.

Последний выпуск 5.2, или если вы хотите поддерживать совместимость с ABI, 4.9.3. 4.8.1. Я считаю, что первая версия была полной, поэтому нет причин начинать меньше, чем там.

+0

Это было полезно, я обновляю его. Я ценю это! – Talcicio

Смежные вопросы