VisualStudioを使用してqmake
います。リリースビルドでは、qmakeはすべてのプロジェクトに/GLフラグと/O2フラグを追加し、Qtプロジェクト全体の特定のライブラリのこれら2つのフラグを削除する必要があります。方法はありますか?
7 に答える
同様の問題が発生し、.proファイルに次のディレクティブを追加することで解決しました。
QMAKE_CXXFLAGS_RELEASE-= -g
_RELEASEサフィックスを確認してください。そうでない場合は、機能しません。
これを使って.proファイルを編集しましたが、うまくいきました!
QMAKE_CXXFLAGS_RELEASE -= -Zc:strictStrings
QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO -= -Zc:strictStrings
それは動作しません:
QMAKE_CFLAGS_RELEASE -= -Zc:strictStrings
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO -= -Zc:strictStrings
あなたが試すことができます:
QMAKE_CXXFLAGS_RELEASE -= -GL -O2
QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO -= -GL -O2
見てみましょう:
Qt dir \compiler \ mkspecs \ win32-msvc2013 \ qmake.conf
これが機能する唯一の方法は
QMAKE_CFLAGS -= /GL /O2
しかし、これがうまくいくとは思えませんQMAKE_CFLAGS
。
QMAKE_CFLAGS
または、以前の値を忘れて、を再定義することもできます。
QMAKE_CFLAGS = $$CFLAGS_WITHOUT_GL_O2
構成で使用されるqmakespecを編集できます。
それを見つける最も簡単な方法は、開くことです
%QTDIR%\mkspecs\%QMAKESPEC%
環境変数が設定されていると仮定します(設定されている必要があります)
動作しない場合に備えて、次のようになりますC:\Qt\4.x.x\mkspecs\win32-msvc2010
qmake.confファイルでは、次の2行を調整できます(ファイル内の異なる場所にあります)
QMAKE_CFLAGS_RELEASE = -O2 -MT
QMAKE_CFLAGS_LTCG = -GL
に
QMAKE_CFLAGS_RELEASE = -MT
QMAKE_CFLAGS_LTCG =
ただし、使用しているすべてのQtバージョンに対してこれを実行する必要があることに注意してください(将来の更新ごとに実行します)。
[編集]
特定のプロジェクトに-O2-GLオプションが必要な場合は、追加する必要があります
QMAKE_CFLAGS_RELEASE += -O2
QMAKE_CFLAGS_LTCG += -GL
これらのオプションを必要とするプロジェクトの.proファイルに。
それを使用するプロジェクトと使用しないプロジェクトの量に応じて、このアプローチまたはQMAKE_CFLAGSの再定義のいずれかがより便利になります。
-=
動作しない場合
.proファイルで試してください
QMAKE_CFLAGS = $$replace(QMAKE_CFLAGS, "-GL ", "")
QMAKE_CFLAGS = $$replace(QMAKE_CFLAGS, "-O2 ", "")
最近、私は同じ問題に直面しました。Zc:strictStringsコンパイラフラグを削除する必要がありました。削除するだけではうまくいかないことをすぐに知りました。したがって、解決策は、この文字列を.proファイルに含めることによってフラグをオーバーライドすることです。
QMAKE_CXXFLAGS+=-Zc:strictStrings-
このように、コンパイラは警告を出力します。cl:コマンドライン警告D9025:'/ Zc:strictStrings'を'/ Zc:strictStrings-'でオーバーライドしますが、それでも機能します。
私のために働いたのは、.proファイルに以下を追加することでした:
QMAKE_CXXFLAGS -= -Zc:strictStrings