Подтвердить что ты не робот

Как изменить настройку библиотеки времени выполнения С++ в QtCreator?

Я абсолютно не знаком с Qt. Я создал программу с использованием С++ в Visual Studio 2010, в которой я использую внешнюю библиотеку из Dcmtk. Теперь я хочу добавить пользовательский интерфейс к этой программе. В моей первоначальной программе мне пришлось изменить параметр С++ Runtime Library в генерации кода в Visual Studio на Multi-Threaded(/MT) из Multi-Threaded Debug DLL, иначе программа не будет работать. Я должен сделать то же самое в QtCreator, но я не знаю, как изменить эту настройку в Qt. Не могли бы вы предложить, как я должен подойти к этому? Спасибо.

4b9b3361

Ответ 1

/MT - это флаг компилятора. Вы можете указать флаги в файле .pro следующим образом:

QMAKE_CXXFLAGS += /MT

Кроме того, вы, вероятно, хотите указать /MTd для сборки отладки:

Release:QMAKE_CXXFLAGS += /MT
Debug:QMAKE_CXXFLAGS += /MTd

Ответ 2

В версии QT 5.5 переменная QMAKE_CXXFLAGS_DEBUG и QMAKE_CXXFLAGS_RELEASE, поэтому новое рабочее решение для QT 5.5:

QMAKE_CXXFLAGS_DEBUG += /MTd
QMAKE_CXXFLAGS_RELEASE += /MT

Ответ 3

Для этого также доступна конфигурация qmake.

CONFIG += thread

Ответ 4

начиная с Qt 5, добавляя к вашему файлу сценария сборки qmake *.pro файл, такая конфигурация:

CONFIG += static_runtime

заставит qmake включить mkspecs/features/static_runtime.prf, который должен содержать необходимые конфигурации, что-то вроде ниже:

msvc {
    # -MD becomes -MT, -MDd becomes -MTd
    QMAKE_CFLAGS ~= s,^-MD(d?)$, -MT\1,g
    QMAKE_CXXFLAGS ~= s,^-MD(d?)$, -MT\1,g
} else: mingw {
    QMAKE_LFLAGS += -static
}

но в качестве предварительного предупреждения обратите внимание, что это может привести к некоторым ошибкам связи, которые приводят к выражению типа " MSVCRT.lib(MSVCRxxx.dll): error LNK2005: xxx already defined in LIBCMTD.lib(xxx.obj) ", в основном потому, что другие библиотеки то, что вы используете, связано с динамической библиотекой CRT (т.е. они НЕ /MTd флагом /MT или /MTd, и вам нужно будет перестроить их с соответствующим флагом), чтобы больше увидеть этот вопрос.