3

OSXでclangを使用してqmakeを使用しています。.pro ファイルで次のフラグを指定して c++11 を使用しようとしています

QMAKE_CXXFLAGS += -std=c++11 -stdlib=libc++

ただし、qmake は makefile で follow フラグを生成します

CXXFLAGS = ... -mmacosx-version-min=10.5 ...

このフラグにより​​、clang でエラーが発生します

invalid deployment target for -stdlib=libc++ (requires OS X 10.7 or later)

フラグを10.7に変更すると問題が修正されました

CXXFLAGS = ... -mmacosx-version-min=10.7 ...

qmakeがmakefileでこのフラグを発行するのを止める方法はありますか?

4

2 に答える 2

0

Specify the target version via QMAKE_MACOSX_DEPLOYMENT_TARGET, e.g.:

QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.7

If you would totally get rid of the flag, you would get some message like:

ld: warning: -macosx_version_min not specified, assuming 10.8

So, your compiler will automatically add it anyway.

That flag is there for a reason. It's written into your binary. And when you try to load that binary on an older system, it will abort.

Now, if you really want MacOSX 10.5 compatibility, you cannot use -stdlib=libc++ because that libc++ is simply not available before MacOSX 10.7.

If you need libc++ (e.g. some C++11 features) + you want to make it work on <10.7, that's not so easy. See here for a related question.

于 2014-02-17T13:17:10.120 に答える