Cygwin上的Phonon抱怨Qt编译时没有支持-fvisibility = hidden

时间:2014-03-06 17:39:48

标签: c++ qt cygwin phonon

我正在尝试在Cygwin的测试程序中使用Phonon库。

CMake用于构建:

  

find_package(Phonon REQUIRED)

但它会生成以下错误消息:

$ make
-- Found Qt-Version 4.8.5 (using /usr/bin/qmake-qt4)
-- Found X11: /usr/lib/libX11.dll.a
-- Found Automoc4: /usr/bin/automoc4.exe
CMake Error at /usr/share/phonon/buildsystem/FindPhononInternal.cmake:296 (message):
  Qt compiled without support for -fvisibility=hidden.  This will break
  plugins and linking of some applications.  Please fix your Qt installation.
Call Stack (most recent call first):
  /usr/lib/cmake/phonon/PhononConfig.cmake:30 (include)
  CMakeLists.txt:8 (find_package)

我的测试程序已经成功使用了Qt,我使用cygwin安装程序安装了Qt和Phonon。

我尝试编译Phonon的CMake脚本中使用的测试程序:

#include <QtCore/QtGlobal>
int main()
{
  #ifndef QT_VISIBILITY_AVAILABLE 
  #error QT_VISIBILITY_AVAILABLE is not available
  #endif 
}

这个程序确实没有编译:

main.cpp:24:3: error: #error QT_VISIBILITY_AVAILABLE is not available
  #error QT_VISIBILITY_AVAILABLE is not available
   ^

那么这里有什么问题?我认为如果Cygwin人员为Phonon提供一个软件包,他们就会确保它与他们的Qt软件包兼容。这个问题只发生在Cygwin上,我在我的Gentoo机器上试过它并且编译没有问题。

1 个答案:

答案 0 :(得分:1)

在不支持ELF可见性属性的平台上,例如Cygwin和Windows,需要使用-D__KDE_HAVE_GCC_VISIBILITY=NO配置KDE组件以避免此错误。 Cygwin声子包(以及Cygwin Ports KDE包)都是用cygport构建的,它在kde4_compile中自动处理。