Нахождение поставщика компилятора / версия с помощью qmake

Я достал ком-материал, чтобы сократить ответ. Поскольку у вас не было дополнительного кода в процедурах свойств, я сократил его до автоматических свойств. Я также переместил адрес Class самостоятельно. Этот класс может быть полезен в других случаях, когда в программе не требуется вложенный класс.

Public Class ComClass1
    Public Property CustName As String
    Public Property CustAddress As List(Of address)
    Public Sub New(cName As String, cAddresses As List(Of address))
        CustName = cName
        CustAddress = cAddresses
    End Sub
End Class

Public Class address
    Public Property Address1 As String 'Street Address
    Public Property Address2 As String 'City and State
    Public Sub New(a1 As String, a2 As String)
        Address1 = a1
        Address2 = a2
    End Sub
End Class

Private Sub DeclareAComClass1()
    Dim addrList As New List(Of address) From {
        New address("12 Main Street", "Los Angeles, CA"),
        New address("13 Park Avenue", "New York, NY")
    }
    Dim cc As New ComClass1("Big Company, Inc.", addrList)
End Sub
9
задан tshepang 7 February 2013 в 17:09
поделиться

4 ответа

В дополнение к ответу ashcatch , 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" )
    }
}

Затем позже, когда вы захотите использовать его для указания целей, вы можете использовать правила определения конфигурации:

SOURCES += blah blah2 blah3
g++4: SOURCES += blah4 blah5
14
ответ дан 4 December 2019 в 09:14
поделиться

Each compiler vendor use to define some specific symbols that identify the compiler and version. You could make the check using those symbols.

I know, for example, that _MSC_VER gives the version of Microsoft C++ Compiler.

What I also know is that Boost Libraries use this kind of feature selection and adaptation.

You can take a look to Boost Config headers, found in include folder, at path: boost/config/* , specially at select_compiler_config.hpp.

By using those compiler specific symbols, you can make feature selection at preprocessing phase of building the code.

0
ответ дан 4 December 2019 в 09:14
поделиться

Для начала я бы посмотрел на область видимости, которую поддерживает qmake:

Области и условия

Но хотя я читаю об этом, кажется, что по умолчанию вы можете использовать общие условия платформы, такие как win32 или unix , или вы можете использовать имя спецификации qmake, например linux-g ++ . Вы можете протестировать версию Visual Studio следующим образом (поскольку разные версии Visual Studio используют разные спецификации qmake), но я не думаю, что вы можете протестировать версию gcc вот так (по крайней мере, я не знаю как).

2
ответ дан 4 December 2019 в 09:14
поделиться

В моей версии gcc и g ++ определены следующие макросы

#define __GNUC__ 4 
#define __GNUC_MINOR__ 0
#define __GNUC_PATCHLEVEL__ 1

Кроме того, g ++ определяет:

#define __GNUG__ 4
0
ответ дан 4 December 2019 в 09:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: