#c #g #window
#c #g #окно
Вопрос:
Я пытаюсь сгенерировать выходной файл с помощью макроса в исходном файле. Каким бы ни было имя макроса, сгенерируйте конечный EXE-файл, используя имя макроса.
#include <iostream>
#define Apple
//#define Banana
//#define Mango
int main()
{
...
}
Как я мог бы сгенерировать имя выходного файла, например Apple.exe ?
компилятор: g ОС: Windows
Комментарии:
1. Вы не можете. Выходное имя определяется вызовом компоновщика. Для чего вам это нужно?
2. У меня есть несколько графических интерфейсов внутри main.cpp файл, который будет создан с использованием имени макроса. Я хочу иметь отдельные сборки и, в свою очередь, отдельный .exe для каждого макроса.
3.Разве это не просто вопрос установки имени макроса при создании соответствующей вещи? например
g -o Banana main.cpp -DNAME=Banana
g -o Apple main.cpp -DNAME=Apple
4. хм, я думаю, это правильно
Ответ №1:
Вы не можете управлять именем конечных артефактов компоновщика (в вашем случае исполняемого файла) из исходного кода.
Это должно быть сделано с использованием флага -o <filename>
компоновщика, таким образом, в вашем случае
> g -o Banana.exe main.cpp -DNAME=Banana
Чтобы упростить управление этим, вы можете определить их как переменные в makefile, например, как
# Comment the current, and uncomment a different definiton to change the executables
# name and the macro definition for NAME
FINAL_NAME = Banana
# FINAL_NAME = Apple
# FINAL_NAME = Mango
$(FINAL_NAME).exe : main.cpp
g -o $(FINAL_NAME).exe main.cpp -DNAME=$(FINAL_NAME)