Я достал ком-материал, чтобы сократить ответ. Поскольку у вас не было дополнительного кода в процедурах свойств, я сократил его до автоматических свойств. Я также переместил адрес 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
В дополнение к ответу 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
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.
Для начала я бы посмотрел на область видимости, которую поддерживает qmake:
Но хотя я читаю об этом, кажется, что по умолчанию вы можете использовать общие условия платформы, такие как win32
или unix
, или вы можете использовать имя спецификации qmake, например linux-g ++
. Вы можете протестировать версию Visual Studio следующим образом (поскольку разные версии Visual Studio используют разные спецификации qmake), но я не думаю, что вы можете протестировать версию gcc вот так (по крайней мере, я не знаю как).
В моей версии gcc и g ++ определены следующие макросы
#define __GNUC__ 4
#define __GNUC_MINOR__ 0
#define __GNUC_PATCHLEVEL__ 1
Кроме того, g ++ определяет:
#define __GNUG__ 4