¿Cómo se escribe un archivo MAKE para clang y gcc?

 C Programming >> Programación C >  >> Tags >> Clang
¿Cómo se escribe un archivo MAKE para clang y gcc?

Como mencionó el usuario "Un tipo de programador", hay condicionales en GNU make. Podría verificar fácilmente la versión del compilador de esta manera:

CXXFLAGS = -Og -Wall -Wextra

GCC_CXXFLAGS = -DMESSAGE='"Compiled with GCC"'
CLANG_CXXFLAGS = -DMESSAGE='"Compiled with Clang"'
UNKNOWN_CXXFLAGS = -DMESSAGE='"Compiled with an unknown compiler"'

ifeq ($(CXX),g++)
  CXXFLAGS += $(GCC_CXXFLAGS)
else ifeq ($(CXX),clang)
  CXXFLAGS += $(CLANG_CXXFLAGS)
else
  CXXFLAGS += $(UNKNOWN_CXXFLAGS)
endif

Dado el siguiente archivo fuente test.cpp puedes compilarlo con make CXX=g++ test o make CXX=clang test y debe pasar las banderas apropiadas a cada compilador.

#include <iostream>

int main() {
  std::cout << "Hello World " << MESSAGE << std::endl;
  return 0;
}

Puedes usar CMake para lograr eso. Es mejor usarlo si desea tener un código portátil.

CMake permite generar Makefile que sea apropiado para su sistema (por ejemplo, el compilador predeterminado de su sistema). CMake tiene muchas funciones que pueden ser muy útiles para verificar la configuración real del sistema.

En esta respuesta, tiene un ejemplo de cómo hacerlo:en cmake, ¿cómo puedo probar si el compilador es Clang?

Si aún desea usar Makefile, debe consultar esta respuesta:https://stackoverflow.com/a/2826178/7042963