Смешивание исходного кода C++98 и C++11 в automake/gcc

У меня есть список файлов cpp в проекте, созданном с использованием инструментов automake.

Некоторые из них написаны с использованием стандарта, предшествующего C++11 (например, C++98), и они не могут компилироваться с флагом c++11 gcc (-std=c++11).

В последних файлах cpp используется стандарт C++11, и при компиляции им требуется флаг -std=c++11.

Могу ли я определить в Automake два списка исходных файлов cpp и указать разные флаги компиляции?


person ztik    schedule 13.11.2014    source источник
comment
Каким бы ни был ответ, подумайте об обновлении старых источников. В долгосрочной перспективе это облегчит вам жизнь.   -  person Deduplicator    schedule 13.11.2014
comment
Если вы смешаете C98 и C11 в одном исполняемом файле, у вас могут возникнуть проблемы. Если вы используете boost, у вас, скорее всего, возникнут проблемы.   -  person n. 1.8e9-where's-my-share m.    schedule 13.11.2014
comment
@Deduplicator и н.м. Спасибо за совет. Поскольку конвертировать весь проект сразу сложно, я буду использовать это решение как временное.   -  person ztik    schedule 14.11.2014


Ответы (1)


Это взято непосредственно из Установка флагов для каждого файла с помощью automake

Вы можете объединить свой код C++11 в библиотеку и предоставить различные флаги для этого подмножества кода в Makefile.am.

bin_PROGRAMS        = test 
test_SOURCES        = main.cpp 
test_LDADD          = c11code.la 
noinst_LTLIBRARIES  = c11code.la  
c11code_la_SOURCES  = cxx1_1.cpp cxx1_2.cpp cxx1_3.cpp 
c11code_la_CXXFLAGS = $(CXXFLAGS) -std=c++11
person Oncaphillis    schedule 13.11.2014