Получить конечное имя вывода в виде строки во время компиляции в C ++

У меня есть проект, который компилируется на нескольких платформах ... Windows, Unix, Linux, SCO, назовите свой вкус.

Я хотел бы вставить имя выходной цели в переменную в исходном коде проекта (имя выходной программы, DLL, библиотеки SO или чего-то еще), чтобы я мог использовать его в сообщениях как общий способ ссылки на компонент. назовите его EXE в Windows, DLL, SO-библиотеку в Unix и т. д.

Я имею в виду ключ препроцессора, например FUNCTION _, но что-то, чтобы вытащить имя EXE / DLL в Windows в Visual C ++, а затем, во вторую очередь, выходную библиотеку SO в GCC. Конечно, это, вероятно, будут два разных механизма, но я считаю, что объединить их в один вариант, который я могу использовать в общем случае в моем многоплатформенном коде.

Итак, макрос ' ish вещь или что-то, что я могу назвать, который, по крайней мере, выбирает имя выходного файла Windows во время компиляции (Visual C ++), поэтому я могу вставить его в строку const в коде и, возможно, способ сделать то же самое в GCC, чтобы два платформы можно объединить в единую абстракцию. Желательно не подбирать во время выполнения, а перехватывать и сохранять во время компиляции.

Если вывод - это библиотека, то это имя файла lib. Если это компонент, то имя файла выходного компонента.

Я ожидаю, что Boost или Poco уже должны иметь что-то подобное, возможно, с некоторыми неподдерживаемыми конечными точками, и это нормально.

6
задан Allbite 4 March 2011 в 18:21
поделиться