es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Puedes obtener el contenido de la línea de comandos del compilador desde el programa compilado?

Por razones tontas, se me requiere tener una cadena con las opciones del ejecutable del compilador incrustadas en el programa que estoy compilando. Esto se puede lograr mediante el sistema de compilación o el generador de sistemas de compilación, aunque de una manera fea; pero me preguntaba si puedo obtener esa información de mi compilador.

Lenguaje: C++

Compilador: Cada uno de g++, clang++, icpc, MSVC

Lo que intenté: Volqué todas las definiciones con $CXX -dM -E -x c++ - < /dev/null y no vi nada relevante para los tres primeros compiladores.

Nota: Obviamente, el lenguaje en sí mismo no permite que esto suceda, estoy preguntando sobre características específicas del compilador.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en c++, línea de comandos y opciones de compilador, hay una manera de obtener las opciones del ejecutable del compilador incorporadas en el programa que se está compilando. Aquí están los pasos que puedes seguir para cada uno de los compiladores:

    1. g++: utiliza la bandera -E para preprocesar el archivo fuente y la bandera -v para imprimir el detalle de la salida. Redirecciona la salida a un archivo y busca las opciones. El comando será:

      g++ -E -v source.cpp > output.txt

    2. clang++: utiliza la bandera -### para imprimir los comandos que se ejecutarían para la compilación, redirige la salida a un archivo y busca las opciones. El comando será:

      clang++ -### source.cpp > output.txt

    3. icpc: utiliza la bandera -E para preprocesar el archivo fuente y la bandera -show para imprimir el detalle de la salida. Redirecciona la salida a un archivo y busca las opciones. El comando será:

      icpc -E -show source.cpp > output.txt

    4. MSVC: utiliza la bandera /Bt para generar un archivo de traza de compilación que contendrá la línea de comandos del compilador. El comando será:

      cl.exe /Bt source.cpp

      Esto generará un archivo .tr que se puede leer utilizando tracepdb.exe. El comando será:

      tracepdb.exe source.tr /o output.txt

    Ten en cuenta que estos comandos son específicos para cada compilador y la salida puede diferir. Siempre es una buena idea consultar la documentación del compilador para averiguar si existen banderas u opciones específicas para obtener las opciones del ejecutable del compilador incorporadas en el programa.

Comments are closed.