Разработка кроссплатформенной статической библиотеки C ++ с использованием qmake (через IDE создателя Qt на Mac) - PullRequest
1 голос
/ 12 ноября 2011

Я занимаюсь разработкой библиотеки, которая предназначена для работы на всех платформах (Linux, Mac и Windows). Эта библиотека основана на Qt, которая является библиотекой кроссплатформенного интерфейса пользователя. Я занимаюсь разработкой этой библиотеки на Mac. Текущая сборка, которую я разрабатываю, - это статическая библиотека (.a), которая работает на Linux и Mac. Будет ли это .a library также работать в Windows (скажем, с помощью Visual Studio), или мне нужно для этого создать отдельный тип библиотеки? И если да, как я могу создать статическую библиотеку Windows на моем Mac? Для вашей информации, я использую QtCreator IDE для создания статической библиотеки. Простое руководство / примеры кода / полезные ссылки были бы действительно полезны.

1 Ответ

3 голосов
/ 12 ноября 2011

Во-первых, если вы хотите написать кроссплатформенное программное обеспечение, вам нужно протестировать его на платформах, на которые вы нацелены.Если у вас нет компьютера с Windows для тестирования, вы можете попрощаться с совместимостью с Windows.

Во-вторых, в Windows есть статические библиотеки, но вместо .a используется расширение .lib.Серьезные системы сборки, такие как qmake, должны справиться с этим.Если вы скажете ей создать статическую библиотеку, она сгенерирует .lib в Windows и .a на других платформах.

Конечно, для работы с что-нибудь , это 'Должен быть скомпилирован с тем же компилятором, который используется для программы, с которой он связан.

Если вы сгенерируете файл .lib с помощью GCC (или MinGW, порт Windows GCC), то он можетне должны быть связаны с проектом Visual Studio, потому что они используют разные ABI, разные реализации стандартных библиотек и разные среды выполнения (а также потому, что формат файлов MSVC .lib не документирован и изменяется между версиями компилятора).

Однако,Поскольку qmake работает с большинством компиляторов, не должно быть проблем при создании файла .lib с помощью Visual Studio.

...