¿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.
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:
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
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
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
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 utilizandotracepdb.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.