Как мне создать приложение C ++ для распространения в разных версиях OS X / macOS? - PullRequest
0 голосов
/ 22 мая 2018

Я знаю, что определенные версии компилятора будут нарушать ABI C ++, но я не знаю, какие версии.

Нужно ли мне использовать разные версии Xcode для каждой версии ОС, которую я хочуслужба поддержки?Если да, то какие версии Xcode мне следует использовать?

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Вы, кажется, ожидаете, что типичные проблемы совместимости компилятора C / ABI в Linux характерны для Linux.OS X / macOS в основном не имеет подобных проблем - вы можете создать двоичный файл из последней версии SDK (10.13) и установить для цели развертывания самую старую версию ОС, которую вы хотите поддерживать (например, 10.10).Полученный двоичный файл будет работать с 10.10 и выше, нет необходимости создавать несколько двоичных файлов для разных версий ОС.

В командной строке цель развертывания можно установить с помощью -mmacosx-min-version=.Компилятор даже выдаст ошибку, если вы попытаетесь использовать библиотечную / языковую функцию, которая недоступна в целевой версии (например, std::shared_timed_mutex, новая функция C ++ 14).Обратите внимание, что некоторые новые языковые функции (например, std::make_unique здесь) реализованы в компиляторе / заголовках, поэтому более старая библиотека не является проблемой:

$ cat test5.cpp
#include <memory>
#include <shared_mutex>

int main()
{
    auto x = std::make_unique<int>(3);
    printf("%d\n", *x);
    std::shared_timed_mutex y;
    return 0;
}
$ clang++ -std=c++14 -o test5 test5.cpp -mmacosx-version-min=10.9
test5.cpp:8:7: error: 'shared_timed_mutex' is unavailable: introduced in macOS 10.12
        std::shared_timed_mutex y;
             ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/shared_mutex:204:58: note: 'shared_timed_mutex' has been
      explicitly marked unavailable here
class _LIBCPP_TYPE_VIS _LIBCPP_AVAILABILITY_SHARED_MUTEX shared_timed_mutex
                                                         ^
1 error generated.
0 голосов
/ 22 мая 2018

Я полагаю, что Qt отвечает на вопрос своей таблицей "Поддерживаемые конфигурации для Qt 5.10"

https://doc.qt.io/qt-5.10/supported-platforms.html

Три сборки будут использовать:

Xcode 8.2 (macOS 10.11)

Xcode 8.3.3 (macOS 10.12)

Xcode 9 (macOS 10.13)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...