Вывод названия и версии компилятора C++
От: Zenden Россия  
Дата: 01.04.15 07:11
Оценка:
Хочу в своей проге выводить название и версию компилятора, с помощью которого она собрана. Желательно с битностью и архитектурой.
Есть ли какая-нибудь библиотека, которая с помощью кучи макросов по всяким там __MSC_VER__,GCC_VERSION и т.д. даст мне эту строку?
Или есть другой способ. Я использую разные системы сборки, на винде просто vs solution, на линупсе Qmake.
Заранее спасибо.
Отредактировано 01.04.2015 7:15 Zenden . Предыдущая версия . Еще …
Отредактировано 01.04.2015 7:12 Zenden . Предыдущая версия .
Re: Вывод названия и версии компилятора C++
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 01.04.15 07:46
Оценка: :)
Здравствуйте, Zenden, Вы писали:

Z>Или есть другой способ. Я использую разные системы сборки, на винде просто vs solution, на линупсе Qmake.


В мире UNIX это обязанности ./configure скрипта. Который может позапускать компилятор, пошаманить, получить версию компилятора, параметры его сборки, и сохранить ее куда нить, например в хидер.
Re[2]: Вывод названия и версии компилятора C++
От: Zenden Россия  
Дата: 01.04.15 07:52
Оценка:
Здравствуйте, Mystic, Вы писали:

M>Здравствуйте, Zenden, Вы писали:


Z>>Или есть другой способ. Я использую разные системы сборки, на винде просто vs solution, на линупсе Qmake.


M>В мире UNIX это обязанности ./configure скрипта. Который может позапускать компилятор, пошаманить, получить версию компилятора, параметры его сборки, и сохранить ее куда нить, например в хидер.


А без configure как? Как быть с VS solution?
Отредактировано 01.04.2015 7:53 Zenden . Предыдущая версия .
Re: Вывод названия и версии компилятора C++
От: jazzer Россия Skype: enerjazzer
Дата: 01.04.15 07:56
Оценка:
Здравствуйте, Zenden, Вы писали:

Z>Хочу в своей проге выводить название и версию компилятора, с помощью которого она собрана. Желательно с битностью и архитектурой.

Z>Есть ли какая-нибудь библиотека, которая с помощью кучи макросов по всяким там __MSC_VER__,GCC_VERSION и т.д. даст мне эту строку?
Z>Или есть другой способ. Я использую разные системы сборки, на винде просто vs solution, на линупсе Qmake.
Z>Заранее спасибо.

Boost.Predef: http://www.boost.org/libs/predef
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re: Вывод названия и версии компилятора C++
От: jazzer Россия Skype: enerjazzer
Дата: 01.04.15 08:10
Оценка:
Здравствуйте, Zenden, Вы писали:

Z>Хочу в своей проге выводить название и версию компилятора, с помощью которого она собрана. Желательно с битностью и архитектурой.

Z>Есть ли какая-нибудь библиотека, которая с помощью кучи макросов по всяким там __MSC_VER__,GCC_VERSION и т.д. даст мне эту строку?
Z>Или есть другой способ. Я использую разные системы сборки, на винде просто vs solution, на линупсе Qmake.
Z>Заранее спасибо.

Плюс еще
Boost.Config: http://www.boost.org/doc/libs/1_57_0/libs/config/doc/html/boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.boost_informational_macros

конкретно макросы

BOOST_COMPILER
Defined as a string describing the name and version number of the compiler in use. Mainly for debugging the configuration.

BOOST_STDLIB
Defined as a string describing the name and version number of the standard library in use. Mainly for debugging the configuration.

BOOST_PLATFORM
Defined as a string describing the name of the platform. Mainly for debugging the configuration.

jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re: Вывод названия и версии компилятора C++
От: PM  
Дата: 01.04.15 08:18
Оценка:
Здравствуйте, Zenden, Вы писали:

Z>Хочу в своей проге выводить название и версию компилятора, с помощью которого она собрана. Желательно с битностью и архитектурой.

Z>Есть ли какая-нибудь библиотека, которая с помощью кучи макросов по всяким там __MSC_VER__,GCC_VERSION и т.д. даст мне эту строку?
Z>Или есть другой способ. Я использую разные системы сборки, на винде просто vs solution, на линупсе Qmake.
Z>Заранее спасибо.

В boost.config есть несколько таких макросов: BOOST_COMPILER, BOOST_STDLIB, BOOST_PLATFORM

Битность это sizeof(void*) * CHAR_BIT?
Re[2]: Вывод названия и версии компилятора C++
От: Zenden Россия  
Дата: 01.04.15 08:24
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Плюс еще

J>Boost.Config: http://www.boost.org/doc/libs/1_57_0/libs/config/doc/html/boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.boost_informational_macros

J>конкретно макросы

J>

J>BOOST_COMPILER
J>Defined as a string describing the name and version number of the compiler in use. Mainly for debugging the configuration.

J>BOOST_STDLIB
J>Defined as a string describing the name and version number of the standard library in use. Mainly for debugging the configuration.

J>BOOST_PLATFORM
J>Defined as a string describing the name of the platform. Mainly for debugging the configuration.


То что нужно! Спасибо.
Re[2]: Вывод названия и версии компилятора C++
От: Zenden Россия  
Дата: 01.04.15 08:25
Оценка:
Здравствуйте, PM, Вы писали:

PM>Здравствуйте, Zenden, Вы писали:


Z>>Хочу в своей проге выводить название и версию компилятора, с помощью которого она собрана. Желательно с битностью и архитектурой.

Z>>Есть ли какая-нибудь библиотека, которая с помощью кучи макросов по всяким там __MSC_VER__,GCC_VERSION и т.д. даст мне эту строку?
Z>>Или есть другой способ. Я использую разные системы сборки, на винде просто vs solution, на линупсе Qmake.
Z>>Заранее спасибо.

PM>В boost.config есть несколько таких макросов: BOOST_COMPILER, BOOST_STDLIB, BOOST_PLATFORM


PM>Битность это sizeof(void*) * CHAR_BIT?


То что нужно! Спасибо.
Re: Вывод названия и версии компилятора C++
От: Skorodum Россия  
Дата: 01.04.15 12:19
Оценка:
Здравствуйте, Zenden, Вы писали:

Pre-defined Compiler Macros

C qmake можно как-то так: Finding compiler vendor / version using qmake:

linux-g++ {
    system( g++ --version | grep -e "\<4.[0-9]" ) {
        message( "g++ version 4.x found" )
        CONFIG += g++4
    }
    else system( g++ --version | grep -e "\<3.[0-9]" ) {
        message( "g++ version 3.x found" )
        CONFIG += g++3
    }
    else {
        error( "Unknown system/compiler configuration" )
    }
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.