Makefile e Flags de Compilação em C++ [RESOLVIDO]

1. Makefile e Flags de Compilação em C++ [RESOLVIDO]

César
dark777

(usa Debian)

Enviado em 09/12/2016 - 13:42h

Pesssoal estou criando um Makefile bem completo para meus programas em C++ porem
queria saber especificamente que recursos do C++ cada flag abaixo compila?
se pelo que andei pesquisando sobre Makefiles estao corretos as flags para cada padrao?

#c++ 98
-std=c++98 ou -std=gnu++98
-std=c++0x ou -std=gnu++0x

#c++ 11
-std=c++11 or -std=gnu++11
-std=c++11x or -std=gnu++11x

#c++ 14
-std=c++1y or -std=gnu++1y
-std=c++14 or -std=gnu++14

#c++ 17
-std=c++1z or -std=gnu++1z

Desde Ja agradeço esclarecimentos...


  


2. Re: Makefile e Flags de Compilação em C++ [RESOLVIDO]

Uilian Ries
uilianries

(usa Linux Mint)

Enviado em 09/12/2016 - 14:01h

Se quiseres compilar por feature, que é o que me parece, seria melhor usar CMake e especificar quais features vocês necessita, sem precisar passar flag explícita.

Por exemplo:

cmake_minimum_required(VERSION 3.1.0)
project(foo CXX)
add_executable(foo main.cpp)
target_compile_features(foo PRIVATE cxx_range_for)


Aqui estou dizendo que o programa foo irá necessitar de for range loop. Essa feature está presente a partir do c++11. Se eu estiver usando um versão antiga do GCC, posso não possuir o suporte a std=c++11, sendo necessário usar a versão experimental.
Caso eu opte por utilizar por feature necessária, o CMake irá resolver as flags, independente da versão do compilador.
--
Uilian Ries
Linux Counter: 521986


3. Re: Makefile e Flags de Compilação em C++ [RESOLVIDO]

Uilian Ries
uilianries

(usa Linux Mint)

Enviado em 09/12/2016 - 14:10h

Mas se você quiser descobri o que cada versão do gcc suporta, vai ter que explorar a documentação.

Aqui existe umas tabelas de features suportadas:
https://gcc.gnu.org/projects/cxx-status.html#cxx11
https://gcc.gnu.org/projects/cxx-status.html#cxx14
https://gcc.gnu.org/projects/cxx-status.html#cxx1z (c++17 experimental)

Entenda que status Okay, nem sempre significa funcionando. Por exemplo, se tentar utilizar regex com a versão 4.8.x do g++, você terá problemas, para dar match.

--
Uilian Ries
Linux Counter: 521986


4. Re: Makefile e Flags de Compilação em C++[AJUDA]

César
dark777

(usa Debian)

Enviado em 09/12/2016 - 14:50h

uilianries escreveu:

Se quiseres compilar por feature, que é o que me parece, seria melhor usar CMake e especificar quais features vocês necessita, sem precisar passar flag explícita.

Por exemplo:

cmake_minimum_required(VERSION 3.1.0)
project(foo CXX)
add_executable(foo main.cpp)
target_compile_features(foo PRIVATE cxx_range_for)


Aqui estou dizendo que o programa foo irá necessitar de for range loop. Essa feature está presente a partir do c++11. Se eu estiver usando um versão antiga do GCC, posso não possuir o suporte a std=c++11, sendo necessário usar a versão experimental.
Caso eu opte por utilizar por feature necessária, o CMake irá resolver as flags, independente da versão do compilador.
--
Uilian Ries
Linux Counter: 521986


e vc conhece algum artigo bom para criar um Makefile que trabalhe com CMAKE?
meu makefile é este http://pastebin.com/AHLhiYiR


5. Re: Makefile e Flags de Compilação em C++ [RESOLVIDO]

Uilian Ries
uilianries

(usa Linux Mint)

Enviado em 09/12/2016 - 15:50h

Então, o CMake é sistema para pré-build independente, ou seja, ele pode gerar Makefile, inclusive.

Uma boa maneira de iniciar a compreender ele é através do tutorial: https://cmake.org/cmake-tutorial/
--
Uilian Ries
Linux Counter: 521986






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts